Head First設計模式之命令模式

2021-09-22 17:29:50 字數 1173 閱讀 3933

定義:將乙個請求封裝成乙個物件,從而使您可以用不同的請求對客戶進行引數化。對請求排隊或記錄請求日誌,以及支援可撤消的操作。

主要解決:在軟體系統中,行為請求者與行為實現者通常是一種緊耦合的關係,但某些場合,比如需要對行為進行記錄、撤銷或重做、事務等處理時,這種無法抵禦變化的緊耦合的設計就不太合適。

何時使用:在某些場合,比如要對行為進行"記錄、撤銷/重做、事務"等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將"行為請求者"與"行為實現者"解耦?將一組行為抽象為物件,可以實現二者之間的松耦合。

如何解決:通過呼叫者呼叫接受者執行命令,順序:呼叫者→接受者→命令。

從命令模式的結構圖可以看出,它涉及到五個角色,它們分別是:

認為是命令的地方都可以使用命令模式,比如: 1、gui 中每乙個按鈕都是一條命令。 2、模擬 cmd。

優點:

缺點:使用命令模式可能會導致某些系統有過多的具體命令類。

///

///電視機

///

public

class

television

else}}

//////

命令介面

///

public

inte***ce

commandinte***ce

//////

電視機命令物件

///

public

class

teleisioncommand : commandinte***ce

#endregion

}

//////

控制中心

///

public

static

class

controlcontent

public

static

string

executecontrolobject()

}class

program

}

參考

歡迎閱讀本系列文章:head first設計模式之目錄

Head First設計模式之工廠模式

定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個.工廠方法讓類把例項化推遲到子類 1 抽象工廠角色 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實現的介面或者必須繼承的父類。2 具體工廠角色 它含有和具體業務邏輯有關的 由應用程式呼叫以建立對應的具體產品的物件。3 抽象產品...

《Head First設計模式》之命令模式

命令模式就是將方法呼叫 method invocation 封裝起來。通過封裝方法呼叫,我們可以把運算塊包裝成形,所以呼叫此運算的物件不需要關心事情是如何進行的,只要知道如何使用包裝成形的方法來完成它就可以了。通過封裝方法呼叫,可以用在以下場景 記錄日誌或者重複使用這些封裝來實現撤銷 undo 我對...

Head First設計模式之組合模式

將物件組合成樹形結構來表現 整體 部分 層次結構。組合能讓客戶以一致的方法處理個別物件以及組合物件。主要部分可以被一致對待問題.組合模式主要包含三個角色 2.composite 容器構件 容器節點包含子節點,其子節點可以是葉子節點,也可以是容器節點,它提供乙個集合用於儲存子節點,實現了在抽象構件中定...