6 命令模式

2021-09-01 11:27:51 字數 1083 閱讀 9172

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模式 我們講的前面很多模式的思路都是使用組合,而不用繼承。並且也提到了乙個設計原則 優先使用組合 但是這個模式就是乙個使用繼承來解決問題的思路。畢竟,繼承也不是一無是處。在有些系統中,乙個事務的完成需要通過一系列的步驟,就是第一步幹什麼,第二步幹什麼。這個步驟的序列是固...