вать всю иерархию Visitor. Фун

Автор admin Понедельник, 22 июня 2009 11:32

вать всю иерархию Visitor. Функция acceptQ в подклассах Flower начинает двойную диспетчеризацию. В ходе первой диспетчеризации определяется точный тип Flower, в ходе второй — точный тип Visitor. Зная оба типа, можно выполнять операции, соответствующие обоим типам. Скорее всего, вам не придется использовать Посетителя — мотивация для его применения необычна, а жесткие ограничения сводят его ценность «на нет». Примеры в книге БЧ неубедительны; сначала авторы рассматривают компилятор (написанием компиляторов занимается не так уж много людей, и вряд ли в них будет использоваться этот паттерн), а потом извиняются за остальные примеры и говорят, что не стали бы применять Посетителя в подобных случаях. Чтобы отказаться от обычной объектно-ориентированной структуры в пользу Посетителя, понадобятся куда более убедительные доводы — какие преимущества вы реально получите в обмен на радикальное усложнение и ограниченность? Почему нельзя просто добавить новые виртуальные функции в базовый класс, когда выяснится, что они вам нужны? А если уж действительно нужно включить новые функции 528 Глава 10 • Паттерны проектир


Комментарии закрыты.