[Design Pattern] Command Pattern 簡單案例

來源:互聯網
上載者:User

標籤:

Command Pattern, 即命令模式,把一個命令包裹在一個對象裡面,將命令對象傳遞給命令的執行方,屬於行為類的設計模式

 

下面是命令模式的一個簡單案例。

Stock 代表被操作的對象。Order 定義命令的介面,BuyStock, SellStock 是具體類,實現 Order 介面。Broker 是命令的執行方。CommandPatternDemo 示範命令模式。

代碼實現

Order, 命令介面

public interface Order {    public void execute();}

具體的命令類

public class BuyStock implements Order {    private Stock stock;        public BuyStock(Stock stock){        this.stock = stock;    }        @Override    public void execute() {        stock.buy();    }}

 

public class SellStock implements Order {    private Stock stock;        public SellStock(Stock stock){        this.stock = stock;    }        @Override    public void execute() {        stock.sell();    }}

Broker, 命令的執行者

import java.util.LinkedList;import java.util.List;public class Broker {        private List<Order> orders = new LinkedList<>();        public void takeOrder(Order order){        orders.add(order);    }        public void placeOrders(){        for (Order order : orders){            order.execute();        }    }}

示範命令模式

public class CommandPatternDemo {    public static void main(){        Stock stock = new Stock("apple", 19);                Order buyStock = new BuyStock(stock);        Order sellStock = new SellStock(stock);                        Broker broker = new Broker();        broker.takeOrder(buyStock);        broker.takeOrder(sellStock);                broker.placeOrders();    }}

 

考慮擴充性

需要新增一個命令操作時,如 FreezeStock:

1. 新增一個檔案,實現 FreezeStock 類,使其實現 Order 介面。

2. 在 Stock 中添加 freeze 方法

3. 在用戶端中調用新增的 FreezeStock 對象,類實現命令。

即可實現新增操作的效果,無需修改命令執行方 Broker 的代碼。

 

參考資料

Design Patterns - Command Pattern, TutorialsPoint

 

[Design Pattern] Command Pattern 簡單案例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.