Latest web development tutorials

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

Командный режим (команда) представляет собой шаблон проектирования управляемых данными, он относится к типу модели. Команда запроса в виде пакетов в объекте, и перешел к вызывающему объекту. Глядя объект вызова может обрабатывать соответствующий объект команды, и команда передается на соответствующий объект, который выполняет команду.

введение

Намерение: Инкапсулируйте запрос как объект, так что вы можете использовать различные запросы параметризировать клиентов.

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

Когда использовать: В некоторых случаях, например, к поведению "записи, отмена / повтор, операции" и другие виды лечения, такие изменения не могут противостоять жесткой муфты неуместна.В этом случае, как будет "поведение запрашивающая" и "поведение реализатор" развязку? Действует как совокупность абстрактных объектов, слабая связь может быть достигнуто между ними.

Как исправить: Запуск получателем для вызова абонента, в следующем порядке: приемник звонящего по телефону → → Command.

Код ключа: определение трех ролей: 1, получил реальный командный объект исполнения 2, 3 команды, объекты инициатора вызова с помощью ввода команд

Примеры применения: распорками 1 ядро контроллер ActionServlet в действии только один, эквивалент заклинателя, в то время как модель класса слой будет , как различные приложения имеют различные классы модели, эквивалент конкретного командования.

Преимущества: 1, система снижает степень сцепления.2, новые команды могут быть легко добавлены в систему.

Недостатки: командный режим может привести некоторые системы имеют слишком много конкретного класса команд.

Сценарий использования: что местная команда может использовать командный режим, например: 1, GUI каждая кнопка является командой.2, моделируются CMD.

Примечание: Система должна поддерживать команду отмены (Undo) и операции операции восстановления (Redo), вы можете рассмотреть вопрос об использовании режима управления см расширенного режима командной строки.

реализация

Сначала мы создали в качестве командного интерфейса назаказ,а затем создать класс запросаStock.Entity и командные классыBuyStockSellStock,заказреализует интерфейс, он будет выполнять фактическую обработку команд. Созданный как классБрокеромобъектавызова,который может принимать заказы и заказы.

ОбъектБрокерс использованием режима управления, основанный на тип команды , чтобы определить , какой именно объект для выполнения , какие команды.CommandPatternDemo,наши демонстрационные классы , использующие классBroker, чтобы продемонстрировать командный режим.

Режим командной UML диаграмма

Шаг 1

Создание интерфейса командной строки.

Order.java

открытый интерфейс заказа {
   недействительными выполнить ();
}

Шаг 2

Создание класса запроса.

Stock.java

общественного класса со {
	
   частное имя String = "ABC";
   частное INT количество = 10;

   общественного недействительными покупка () {
      System.out.println ( "Фондовая [Имя:" + имя + ", 
         Количество: "+ количество +"] купил ");
   }
   общественного недействительными продают () {
      System.out.println ( "Фондовая [Имя:" + имя + ", 
         Количество: "+ количество +"] проданный ");
   }
}

Шаг 3

Создать класс объектовOrderреализует интерфейс.

BuyStock.java

Открытый класс BuyStock реализует Order {
   частный сток abcStock;

   общественного BuyStock (со abcStock) {
      this.abcStock = abcStock;
   }

   общественного недействительными выполнить () {
      abcStock.buy ();
   }
}

SellStock.java

Открытый класс SellStock реализует Order {
   частный сток abcStock;

   общественного SellStock (со abcStock) {
      this.abcStock = abcStock;
   }

   общественного недействительными выполнить () {
      abcStock.sell ();
   }
}

Шаг 4

Создание командных вызовов класса.

Broker.java

импорт java.util.ArrayList;
импорт java.util.List;

   Открытый класс Брокер {
   частный List <Order> OrderList = новый ArrayList <Order> (); 

   общественного недействительными takeOrder (заказ Order) {
      orderList.add (заказ);		
   }

   общественного недействительными placeOrders () {
      для (заказ Заказать: OrderList) {
         order.execute ();
      }
      orderList.clear ();
   }
}

Шаг 5

Используйте класс Broker принимать и исполнять команды.

CommandPatternDemo.java

Открытый класс CommandPatternDemo {
   государственной статической силы основных (String []) {агдз
      Фото abcStock = новый Stock ();

      BuyStock buyStockOrder = новый BuyStock (abcStock);
      SellStock sellStockOrder = новый SellStock (abcStock);

      Брокер Брокер = новый брокер ();
      broker.takeOrder (buyStockOrder);
      broker.takeOrder (sellStockOrder);

      broker.placeOrders ();
   }
}

Шаг 6

Проверьте выход.

Фото [Имя: ABC, Количество: 10] купил
Фото [Имя: ABC, Количество: 10] продано