Design Pattern - Command Pattern

Command pattern merupakan data yang diperoleh dari design pattern dan termasuk kategori Behavioral pattern. Pattern ini bertujuan untuk menangani komunikasi antar kelas atau objek. Permintaan dari command pattern sendiri dikemas dengan beberapa pilihan / action dari parameter.

Implementasi

Kita telah memiliki interface Order dimana ini bertindak sebagai command. Kita juga telah membuat kelas Stock yang berperan sebagai request. Dan juga telah ada kelas BuyStock dan SellStock dan SellStock mengimplementasikan antarmuka Order dimana akan bertindak sebagai proses command. Kelas Broker dibuat sebagai objek invoker. Hal ini bisa mengambil dan menggantikan Order.

Gambar 1. UML Diagram Command Pattern

Langkah 1
Membuat antarmuka command.
Order.java
public interface Order {
   void execute();
}

Langkah 2
Membuat kelas request.
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
Membuat kelas concrete sebagai implementasi dari Order interface
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
Membuat kelas command 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 mengeksekusi commands.
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 output.
Stock [ Name: ABC, Quantity: 10 ] bought
Stock [ Name: ABC, Quantity: 10 ] sold



Terima kasih :)

Source : ada disini

Comments

Popular posts from this blog

Contoh Use Case Diagram Perpustakaan