1. Введение
в режиме конструкторакомандный режимЭто поведенческий шаблон проектирования. Шаблон команды отделяет ответственность за выдачу команд от ответственности за выполнение команд и делегирует выполнение различным объектам. Типичное "каждый занимается своим делом и добивается своего".
2. Командный режим
Основы шаблонов командUMLДиаграмма классов выглядит следующим образом:
В командном режиме есть несколько ролей, в соответствии с приведенной выше диаграммой классов я представлю их одну за другой:
- CommandАбстрактный интерфейс для конкретной команды.
-
ConcreteCommandявляется его конкретной реализацией, вы можете иметь несколько
Command
реализация интерфейса. Сама конкретная команда не реализует конкретную бизнес-команду, а делегирует вызов объекту бизнес-логики для выполнения. - Receiverкак конечный получатель конкретной команды. Практически любой объект может быть приемником, подробности команды приведеныReceiverреализовать.
-
InvokerПеренести выполнение команды
action
просить. Он не отвечает за создание объекта команды, он обычно получает предварительно сгенерированные команды от клиента через конструктор. - ClientИнициировать конкретные заказы наInvokerвыполнить.
Командный режим будет инициатором командыClientи конкретный исполнитель командыReceiverПолностью развязанные, две стороны не взаимодействуют друг с другом напрямую, и масштабируемость выше. Кроме того, в командном режиме будет выполняться динамическая параметризованная инкапсуляция логики выполнения (конкретныеCommandРеализация) реализует гибкие бизнес-вызовы и может даже объединять несколько команд в составные команды.
3. Популярное объяснение
Мы должны есть каждый день и неизбежно идти в следующий ресторан.Если вы идете в небольшой ресторан без официанта, вам нужно сказать шеф-повару, что вы хотите съесть.Шеф-повар часто занят, поэтому вам приходится бегать и скажите ему, что вы хороший повар.Вы должны отложить другую работу и отправить ее вам лично. Опыт обеих сторон не очень плохой.
После этого неудачного обеда во второй раз вы найдете большой ресторан. Когда вы входите, официант приглашает вас сесть и дает вам меню, чтобы вы могли поставить галочку. После того, как вы выберете, передайте его официанту, официант несет ответственность за передачу его шеф-повару, а официант приносит его вам после того, как он будет готов. Если вы хотите выпить немного вина в середине, вам просто нужно позвать официанта, и она пойдет в бар, чтобы принести его для вас. Этот обеденный опыт намного лучше, и вам не нужно постоянно общаться с шеф-поваром и баром. Этот опыт намного лучше.
4. Резюме
Приложения в командном режиме очень распространены, наши общие компоненты автоматического выключателяHystrix,а такжеJavaПул потоков в многопоточностиThreadPoolExecutor
Используется командный режим, поэтому его необходимо изучить. аналоговый командный режимDEMOЕго можно получить в соответствующей статье на моем личном сайте.
关注公众号:Felordcn获取更多资讯