設計模式學習(1) 命令模式

2021-07-22 15:33:05 字數 1280 閱讀 8382

定義:命令模式就是將請求發出者和請求執行者進行分離,並且建立乙個中間類,來負責請求發出和執行的互動,這樣能降低系統耦合度,方便未來系統的更新和維護。

uml圖:

優點

方便未來新命令的新增。

缺點

使用命令模式可能會導致某些系統有過多的具體命令類。因為針對每乙個命令都需要設計乙個具體命令類,因此某些系統可能需要大量具體命令類,這將影響命令模式的使用。

適用場景:對一些需求容易改動的地方,場景又類似於這種

發出請求-執行 業務流程的,使用命令模式會帶來很多便利。

場景舉例:

有乙個指揮官今天需要命令三連去襲擊敵營,那麼設計可以為:

版本1

指揮官命令類command:

命令執行類 receiver

但是明天發布的命令可能不一樣,上面的設計無法滿足未來的需要,所以:

版本2

命令介面:command

命令實現類:concretecommand(

三連襲擊敵營)

命令接收者:receiver(三連)

這樣雖然可以滿足未來不定的需求,但是業務邏輯卻暴露了,應該將請求發出和請求執行的邏輯流程封裝起來,對外提供方法呼叫。所以最後為:

版本3

命令介面:command

命令實現類:concretecommand(

三連襲擊敵營)

命令接收者:receiver(三連)

客戶端呼叫者(業務邏輯封裝類):invoker

**實現;

最近在學設計模式,收穫很多,現在嘗試著去總結一下,有些地方還是不能很好的表達出來,出入之處,還望指正。

設計模式學習 命令模式

命令模式,將乙個請求封裝為乙個物件,從而使你可以用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷操作。命令模式的作用 第一,它能較容易地設計乙個命令佇列 第二,在需要的情況下,可以較容易地將命令計入日誌 第三,允許接收請求的一方決定是否要否決請求。第四,可以容易地實現對請求的撤...

設計模式學習 命令模式

最近在看 headfirst設計模式 一書,正開始學習設計模式不久。哎,就大四了,感覺落後了別人很多,傷感。現在也只能一步乙個腳印,慢慢進步吧。其實,前面已經學過工廠模式 抽象工廠和工廠方法 觀察者模式 單件模式 策略模式。今天把命令模式看完了,看懂並不是很困難,我想困難的是如何在實際中運用它們。因...

Head First設計模式1 命令模式

命令模式 通過命令模式,可以使發出請求的物件與被請求的物件都依賴抽象程式設計,而非依賴具體的類,實現了解耦。並且由於較好的封裝了請求,命令模式可以被撤銷。package command inte ce icommand class light public void on public void o...