head-first-design-patterns-master\src\headfirst\designpatterns\command
把方法呼叫封裝起來,可以把運算塊包裝成形。
定義:將「請求」封裝成物件,以便使用不同的請求,佇列或者日誌來引數化其他物件,命令模式也支援可撤銷的操作。
例子:餐廳訂餐
public class light
public inte***ce conmmand
public class lightoncommand implements command
public void execute()
}public class ******remotecontrol
public void setcommand(command command)
public void buttonwaspressed()
}public class remotecontroltest
}
上面是最基礎的**,可以實現如燈(燈開啟命令,燈關閉命令),燈中加入(廚房燈,大廳燈),可以實現電扇的開啟,關閉命令。
可以使用command來載入所有的命令,然後定義遙控器類
public class remotecontrol
undocommand = nocommand;
}public void setcommand(int slot, command oncommand, command offcommand)
public void onbuttonwaspushed(int slot)
public void offbuttonwaspushed(int slot)
public string tostring()
return stringbuff.tostring();
}}
還可以加入巨集命令功能和撤銷功能。
命令模式的更多用途
如scheduler,執行緒池,工作佇列,日誌請求等
將命令放入佇列中,執行緒從佇列中取出命令,執行命令的command之後繼續拿下乙個命令。
hf ch6 命令模式
0.序 不知道怎麼寫序了 遇到了乙個之前未遇到的模式。這一章看到尾確實是太僵硬了,後面會附上我在這章的練習 1.命令模式 命令模式將 請求 封裝成物件,以便使用不同的請求,佇列或者日誌來引數化其他物件,命令模式也支援可撤銷的操作。命令模式可將 動作請求者 從 動作執行者 物件中解耦。例如 按下按鈕後...
HeadFirst 設計模式學習筆記6 命令模式
1.這一節我們的任務是建立乙個類似智慧型家居的萬能遙控器,控制各種家電。我們需要將 請求 封裝成物件 乙個命令物件通過在特定接收者上繫結一組動作來封裝請求 以便使用不同的請求 佇列 或者日誌來引數化其物件 這就是命令模式。2.我們具體來看乙個例子 首先我們要完成對命令的物件封裝 只有乙個方法,所有的...
設計模式6
template method模式 我們講的前面很多模式的思路都是使用組合,而不用繼承。並且也提到了乙個設計原則 優先使用組合 但是這個模式就是乙個使用繼承來解決問題的思路。畢竟,繼承也不是一無是處。在有些系統中,乙個事務的完成需要通過一系列的步驟,就是第一步幹什麼,第二步幹什麼。這個步驟的序列是固...