【Design Patterns】命令模式


//抽象出 order
public interface Order{
  void execute();
}
//定義類,封裝執行方法
public class Stock{
private String name= "ABC";
privare 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");
}
}
//具體化命令,調用類的命令方法
public class BuyStock implements Order{
  private Stock abcStock;
   public BuyStock(Stock abcStock){
    this.abcStock = abcStock;
  }
   public void execute(){
    abcStock.buy();
   }
}

public class SellStock implements Order{
  private Stock abcStock;
  public SellStock(Stock abcStock){
   this. abcStock = abcStock;
  }
  public void execute() {
    abcStock.sell();
 }
}
//定義類,觸發命令調用
public class Broker{
 private List<Order>  orderList = new ArrrayList<Order>();
  public void takeOrder(Order order){
     orderList.add(order);
  }
  public void placeOrders(){
   for(Order ordr : orderList){
    order.execute();
   }
    orderList.clear();
 }
}
//Client Code
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();
 }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章