摘要:命令模式概念將請求封裝成對象,以便使用不同的請求隊列或者日志來參數化其他對象。命令模式也支持可撤銷的操作。從而實現行為請求者與行為實現者的松耦合。
命令模式概念
將請求封裝成對象,以便使用不同的請求、隊列或者日志來參數化其他對象。命令模式也支持可撤銷的操作。
從而實現“行為請求者”與“行為實現者”的松耦合。
抽象命令(Command):定義命令的接口,聲明執行的方法(execute、undo)
具體命令(ConcreteCommand):命令接口實現對象,通常會持有接收者,并調用接收者的功能來完成命令要執行的操作
接收者(Receiver):執行命令的對象
請求者(Invoker):調用命令對象執行請求
light = $light; } public function execute() { $this->light->on(); } public function undo() { $this->light->off(); } } /** * 具體命令(ConcreteCommand) * Class LightOff */ class LightOff implements Command{ private $light; public function __construct(Light $light) { $this->light = $light; } public function execute() { $this->light->off(); } public function undo() { $this->light->on(); } } /** * 請求者(Invoker) * Class Control */ class Control{ protected $object; public function __construct($object) { $this->object = $object; } public function exec(){ $this->object->execute(); } public function undo(){ $this->object->undo(); } } $light = new Light(); $light_on = new LightOn($light); $control = new Control($light_on); $control->exec(); echo "設計原則
"; $control->undo();
1.封裝變化
2.多用組合,少用繼承
3.針對接口編程,不針對實現編程
4.為交互對象之間松耦合設計而努力
5.類應該對擴展開放,對修改關閉
6.依賴抽象、不要依賴具體類
1.命令模式將發出請求的對象和執行請求的對象解耦
2.在被解耦的兩者之間通過命令對象進行溝通。命令對象封裝了接收者和一個或一組動作
3.調用者通過調用命令對象的execute方法發出請求,這樣使得接受者的動作被調用
4.調用者可以接受命令當做參數,甚至在運行時動態的進行
5.命令可以支持撤銷,做法實現一個undo的方法來回到execute被執行前的狀態
6.命令也可以用來實現日志、事物系統、隊列
參考文獻《head first設計模式》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22559.html
摘要:的設計模式有很多種,本文取最簡單的三種模式工廠模式單例模式和注冊樹模式進行簡單的講解。文件創建完后,咱們回到單元測試文件文件再執行一下單元測試命令發現,也能返回成功,這樣的話我們就能很方便的修改任何驅動了。 php 設計模式之工廠模式、單例模式、注冊樹模式 在軟件工程中,創建型設計模式承擔著對象創建的職責,嘗試創建適合程序上下文的對象,對象創建設計模式的產生是由于軟件工程設計的問題,具...
摘要:概念將來自客戶端的請求傳入一個對象,從而使你可用不同的請求對客戶進行參數化。用于行為請求者與行為實現者解耦,可實現二者之間的松耦合,以便適應變化。角色命令在一個方法調用之上定義一個抽象具體的命令一個操作的實現調用者引用實例作為它可用的操作。 概念 將來自客戶端的請求傳入一個對象,從而使你可用不同的請求對客戶進行參數化。用于行為請求者與行為實現者解耦,可實現二者之間的松耦合,以便適應變化...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
閱讀 2181·2021-11-19 09:55
閱讀 2637·2021-11-11 16:55
閱讀 3175·2021-09-28 09:36
閱讀 1945·2021-09-22 16:05
閱讀 3272·2019-08-30 15:53
閱讀 1806·2019-08-30 15:44
閱讀 2899·2019-08-29 13:10
閱讀 1339·2019-08-29 12:30