Шаблон проектирования Observer и Command, почему меню обычно использует шаблон команды? - PullRequest
0 голосов
/ 25 июля 2011

Весь вопрос в том, почему меню обычно реализуются с помощью шаблона проектирования команд, а не с помощью шаблона наблюдателя?

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Есть два аспекта: «диспетчеризация», опция выбирается из меню или нажимается кнопка, и запускается некоторый код.Тогда есть фактический код, который выполняется.

Я не знаю, на какую инфраструктуру пользовательского интерфейса вы ссылаетесь, но я ожидаю увидеть паттерны Observer и Command, используемые в обоих случаях.Интересно, случается ли то, что случай Menu и случай Button просто реализуются вашей средой таким образом, что делают различные аспекты видимыми.

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

В случае кнопки можно подумать о вызываемом кодекак объект команды, но мы более явно подключаем его к событию, поэтому сначала видим шаблон Observer.

0 голосов
/ 25 июля 2011

Я вижу один вариант использования шаблона наблюдателя с пунктом меню или кнопкой. Предположим, есть гороскоп калькулятор. У пользователя есть кнопка для запуска генерации гороскопа. Пользователь нажимает кнопку и команда выдается серверу для расчета. Позже та же кнопка может наблюдать за состоянием сервера или наоборот для обновления статуса или для отображения печати и команды пожарной печати с кнопки. Итак Observer: события необходимо отправлять. Команда: выполненное действие.

...