Если вы передаете команды другого типа, полезно использовать Invoker
. Вы можете использовать один и тот же Invoker для выполнения разных конкретных команд. На другом узле пометка Receiver
с помощью ConcreteCommand
вместо Invoker
допускает слабую связь. Receiver
может изменить имя метода (например, switchOn на swithcOnTV), как в этом примере:
Сообщение по теме: Использование шаблона проектирования команд
Чтобы понять назначение Invoker
, я бы хотел, чтобы вы сослались на эту статью о ресторанах и Варианты использования автосервиса.
Официант (Invoker
) принимает заказ из Customer
на своей подушке. Затем Order
ставится в очередь для повара заказа и попадает к повару (Receiver
), где он обрабатывается.
Клиент Customer
. Он отправляет запрос Receiver
через официанта, которым является Invoker
. Официант инкапсулирует команду (в данном случае заказ), записывая ее на чеке, а затем размещает ее, создавая объект ConcreteCommand
, который является самой командой.
Receiver
будет тем поваром, который после завершения работы над всеми приказами, которые были отправлены ему до рассматриваемой команды, приступает к работе над ним.
Еще одним заметным аспектом примера является тот факт, что панель для заказов не поддерживает только заказы из меню, поэтому она может поддерживать команды для приготовления множества разных блюд.
person
Ravindra babu
schedule
10.02.2016