Design Patterns - Command Pattern

Pola perintah adalah pola desain yang digerakkan oleh data dan termasuk dalam kategori pola perilaku. Permintaan dibungkus di bawah objek sebagai perintah dan diteruskan ke objek invoker. Objek invoker mencari objek yang sesuai yang dapat menangani perintah ini dan meneruskan perintah ke objek yang sesuai yang menjalankan perintah.

Penerapan

Kami telah membuat Order antarmuka yang bertindak sebagai perintah. Kami telah membuat kelas Stock yang bertindak sebagai permintaan. Kami memiliki kelas perintah konkret BuyStock dan SellStock yang mengimplementasikan antarmuka Order yang akan melakukan pemrosesan perintah yang sebenarnya. Sebuah broker kelas dibuat yang bertindak sebagai objek invoker. Itu bisa menerima dan memesan.

Objek broker menggunakan pola perintah untuk mengidentifikasi objek mana yang akan mengeksekusi perintah mana berdasarkan jenis perintahnya. CommandPatternDemo , kelas demo kami, akan menggunakan kelas Broker untuk mendemonstrasikan pola perintah.

Langkah 1

Buat antarmuka perintah.

Order.java

public interface Order {
   void execute();
}

Langkah 2

Buat kelas permintaan.

Stock.java

public class Stock {
	
   private String name = "ABC";
   private int quantity = 10;

   public void buy(){
      System.out.println("Stock [ Name: "+name+", 
         Quantity: " + quantity +" ] bought");
   }
   public void sell(){
      System.out.println("Stock [ Name: "+name+", 
         Quantity: " + quantity +" ] sold");
   }
}

LANGKAH 3

Buat kelas konkret yang mengimplementasikan antarmuka Order .

BuyStock.java

public class BuyStock implements Order {
   private Stock abcStock;

   public BuyStock(Stock abcStock){
      this.abcStock = abcStock;
   }

   public void execute() {
      abcStock.buy();
   }
}

SellStock.java

public class SellStock implements Order {
   private Stock abcStock;

   public SellStock(Stock abcStock){
      this.abcStock = abcStock;
   }

   public void execute() {
      abcStock.sell();
   }
}

LANGKAH 4

Buat kelas perintah invoker.

Broker.java

import java.util.ArrayList;
import java.util.List;

   public class Broker {
   private List<Order> orderList = new ArrayList<Order>(); 

   public void takeOrder(Order order){
      orderList.add(order);		
   }

   public void placeOrders(){
   
      for (Order order : orderList) {
         order.execute();
      }
      orderList.clear();
   }
}

LANGKAH 5

Gunakan kelas Broker untuk mengambil dan menjalankan perintah.

CommandPatternDemo.java

public class CommandPatternDemo {
   public static void main(String[] args) {
      Stock abcStock = new Stock();

      BuyStock buyStockOrder = new BuyStock(abcStock);
      SellStock sellStockOrder = new SellStock(abcStock);

      Broker broker = new Broker();
      broker.takeOrder(buyStockOrder);
      broker.takeOrder(sellStockOrder);

      broker.placeOrders();
   }
}

LANGKAH 6

Verifikasi hasilnya.

Stock [ Name: ABC, Quantity: 10 ] bought
Stock [ Name: ABC, Quantity: 10 ] sold