09.04.2016 Views

Priemioop

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Паттерны поведения<br />

объекта в структуре. Класс ConcreteVisitor предоставляет контекст для<br />

этого алгоритма и сохраняет его локальное состояние. Часто в этом состоянии<br />

аккумулируются результаты, полученные в процессе обхода структуры;<br />

a Element (Node) - элемент:<br />

- определяет операцию Accept, которая принимает посетителя в качестве<br />

аргумента;<br />

a ConcreteElement (AssignmentNode, VariableRefNode) - конкретный<br />

элемент:<br />

- реализует операцию Accept, принимающую посетителя как аргумент;<br />

a ObjectStructure (Program) - структура объектов:<br />

- может перечислить свои элементы;<br />

- может предоставить посетителю высокоуровневый интерфейс для посещения<br />

своих элементов;<br />

- может быть как составным объектом (см. паттерн компоновщик), так<br />

и коллекцией, например списком или множеством.<br />

Отношения<br />

а клиент, использующий паттерн посетитель, должен создать объект класса<br />

ConcreteVisitor, азатем обойти всю структуру, посетив каждый ее элемент.<br />

а при посещении элемента последний вызывает операцию посетителя, соответствующую<br />

своему классу. Элемент передает этой операции себя в качестве<br />

аргумента, чтобы посетитель мог при необходимости получить доступ<br />

к его состоянию.<br />

На представленной диаграмме взаимодействий показаны отношения между<br />

объектом, структурой, посетителем и двумя элементами.<br />

Результаты<br />

Некоторые достоинства и недостатки паттерна посетитель:<br />

Q упрощает добавление новых операций. С помощью посетителей легко добавлять<br />

операции, зависящие от компонентов сложных объектов. Для определения

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!