ункцию visit(). Итак, возникае
Автор admin Понедельник, 22 июня 2009 11:32
ункцию visit(). Итак, возникает следующая дилемма: вы хотите добавить в базовый класс новые функции, но по каким-то причинам не можете изменять его. Как обойти это препятствие? Паттерн Посетитель строится по рассмотренной в начале этого разделе схеме с двойной диспетчеризацией. Он позволяет эффективно расширять интерфейс основного типа посредством создания отдельной иерархии классов типа Visitor для «виртуализации» операций, выполняемых с основным типом. Объекты основного типа просто «принимают» посетителя, а затем вызывают функции посетителя через механизм динамического связывания. Проще говоря, вы создаете посетителя, передаете его основной иерархии и получаете эффект виртуальной функции. Простой пример: //: C10:BeeAndFlowers.cpp // Паттерн Посетитель. #include
Комментарии закрыты.
Последние комментарии