Командный шаблон шаблонов проектирования Java

Java Шаблоны проектирования

1. Введение

в режиме конструкторакомандный режимЭто поведенческий шаблон проектирования. Шаблон команды отделяет ответственность за выдачу команд от ответственности за выполнение команд и делегирует выполнение различным объектам. Типичное "каждый занимается своим делом и добивается своего".

2. Командный режим

Основы шаблонов командUMLДиаграмма классов выглядит следующим образом:

В командном режиме есть несколько ролей, в соответствии с приведенной выше диаграммой классов я представлю их одну за другой:

  • CommandАбстрактный интерфейс для конкретной команды.
  • ConcreteCommandявляется его конкретной реализацией, вы можете иметь несколькоCommandреализация интерфейса. Сама конкретная команда не реализует конкретную бизнес-команду, а делегирует вызов объекту бизнес-логики для выполнения.
  • Receiverкак конечный получатель конкретной команды. Практически любой объект может быть приемником, подробности команды приведеныReceiverреализовать.
  • InvokerПеренести выполнение командыactionпросить. Он не отвечает за создание объекта команды, он обычно получает предварительно сгенерированные команды от клиента через конструктор.
  • ClientИнициировать конкретные заказы наInvokerвыполнить.

Командный режим будет инициатором командыClientи конкретный исполнитель командыReceiverПолностью развязанные, две стороны не взаимодействуют друг с другом напрямую, и масштабируемость выше. Кроме того, в командном режиме будет выполняться динамическая параметризованная инкапсуляция логики выполнения (конкретныеCommandРеализация) реализует гибкие бизнес-вызовы и может даже объединять несколько команд в составные команды.

3. Популярное объяснение

Мы должны есть каждый день и неизбежно идти в следующий ресторан.Если вы идете в небольшой ресторан без официанта, вам нужно сказать шеф-повару, что вы хотите съесть.Шеф-повар часто занят, поэтому вам приходится бегать и скажите ему, что вы хороший повар.Вы должны отложить другую работу и отправить ее вам лично. Опыт обеих сторон не очень плохой.

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

4. Резюме

Приложения в командном режиме очень распространены, наши общие компоненты автоматического выключателяHystrix,а такжеJavaПул потоков в многопоточностиThreadPoolExecutorИспользуется командный режим, поэтому его необходимо изучить. аналоговый командный режимDEMOЕго можно получить в соответствующей статье на моем личном сайте.

关注公众号:Felordcn获取更多资讯

Личный блог: https://felord.cn