Правильное обсуждение:
Командный режим инкапсулирует запрос или операцию в объект. Система выполнения командного режима использует разные запросы для параметризации клиента, запросов очереди или журнала запросов записи, и может предоставить функции отзыва и восстановления команды.
Популярно:
На самом деле это легко понять. Командный режим, то, о чем вы заботитесь, является командами (или операциями). Давайте приведем пример. В компании вся операция похожа на систему. Босс издал приказ, и лидер среднего уровня получил заказ, а затем назначил его конкретному сотрудникам. Весь процесс ясен. Существует требование, как исправить этот процесс и сформировать систему. Нам просто нужно понять ключевой момент: заказ. Извлеките его, и все остальное будет решено. Извлеките команды и инкапсулируйте их в независимый объект для достижения развязки. Что касается других, это может быть легко расширен, независимо от того, была ли эта команда предложена генеральным директором, отделом кадров или вашим отцом. Независимо от того, является ли исполнителем этого приказа Чжан Сан или Черепаха. Появление этой модели на самом деле является философским «захватом основного противоречия». Больше примеров, таких как другие писатели, упоминали: «В чем разница между подходом к дороге и отправлением в ресторан для барбекю, чтобы съесть барбекю» или «Король обезьян суетится о нефритовом императоре во небесном дворце, чтобы запечатлеть обезьян с Венерой Тайбай».
Командный режим Java по сути представляет собой инкапсуляцию команд, которая разделяет ответственность за выдачу команд и делегирует их в разные объекты. С точки зрения непрофессионала, я босс, поэтому я просто отправляю заказ. Что касается того, чтобы отправить этот заказ, и кто его выполняет, это зависит от меня. Я не отправляю деньги, чтобы нанять кого -то, чтобы вызвать неприятности для себя. Вы - сотрудник, отвечающий за вещи, и ваша обязанность - выполнять задачи, назначенные вашим начальством. Будьте приземленным, не знаю слишком много, не сплетен, не спрашивайте слишком много.
выполнить:
Сначала посмотрим на диаграмму классов:
На основании этого мы смотрим на пример кода:
публичный интерфейс iCommand {void execute (); } public Class ConceteCommand реализует Icommand {Private Receiver Reciver; Public ConceteCommand (приемник приемник) {this.receiver = приемник; } @Override public void execute () {this.receiver.action (); }} приемник открытого класса {public void action () {System.out.println ("приемник сделай что -нибудь"); }} public Class Invoker {private Icommand Command; public Invoker (команда iCommand) {this.command = command; } public void indoke () {this.command.execute (); }} Общедоступный тест класса {public static void main (string [] args) {приемник приемник = new Receiver (); // Реальный исполнитель Icommand command = new ConceteCommand (получатель); // команда, используемая для изоляции Invoker = New Invoker (Command); // Звонящий invoker.invoke ();); }}
преимущество:
недостаток:
Там может быть слишком много конкретных командных классов.