Вопрос

Обычно это приемлемо, чтобы позволить посетителю модифицировать состояние приемника или должен быть вместо этого командный шаблон?

Это было полезно?

Решение

Целью шаблона посетителя является допущение добавления новых операций в классную наследственность без модификации к этой наследстве. Я никогда не видел никого, предполагаю, что только операции только для чтения приемлемы. Единственным ограничением является то, что добавленные операции должны использовать только общедоступный интерфейс класса Heirarchy.

Другие советы

Я не думаю, что вы можете сделать одеяло-заявление, хорошо ли это хорошо или плохо изменить состояние чего-либо. Я бы подумал, что это нормально изменить состояния, если это не влияет на саму посещающую логику. Например, вы можете написать посетитель, который посещает все файлы под структурой папки и переименовывает имя файла в верхний регистр.

Пример Microsoft посетителей, модифицирующий приемник, является ExpressionVisitor. Отказ Целью класса ExpressionVisitor является изменение дерева выражения. Так что я думаю, что Microsoft по крайней мере считает, что это приемлемо.

Каждый узор имеет свои собственные плюсы, минусы и использование случаев.

Ты можешь использовать Command шаблон

  1. Отделение invoxer & Reisever of command

  2. Воплощать в жизнь перезвонить механизм

  3. Воплощать в жизнь отменить и повторить Функциональность

  4. Поддерживать а История команд

Использовать Visitor Узор в следующих сценариях:

  1. Аналогичные операции должны быть выполнены на объектах разных типов, сгруппированных в структуре
  2. Вам необходимо выполнить много различных и несвязанных операций. Это отделяет Эксплуатация от объектов Структура
  3. Новые операции должны быть добавлены без изменения структуры объекта

Похожие сообщения:

Используя шаблон дизайна команды

Когда я должен использовать шаблон дизайна для посетителей?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top