設計模式之命令模式

2021-09-25 04:49:07 字數 1292 閱讀 7127

1. 需求

現在,你接到了這樣乙個需求:給乙個遙控器新增功能,每乙個按鍵都對應乙個功能。這樣的需求該如何實現呢?

2. 實現思路

引入命令模式,命令command對應乙個介面,我們所有的具體的命令都實現在command介面,每乙個具體的命令都有對應具體的物體,如燈,風扇等。遙控器remote對應乙個類,remote的成員變數為command,我們的遙控器並不關心command中具體到底是什麼物體,但是每當按鈕被觸發,它就會執行具體類的execute()命令。

3. 具體實現

/**

command介面,所有具體的命令都得實現這個介面,這樣子remote就不需要關心按鈕被觸發後到底哪乙個物體被操作了,remote只需要執行對應的execute()即可。

*/public

inte***ce

command

/**

具體的命令

*/public

class

lightoffcommand

implements

command

@override

public

void

execute()

}

/**

具體的命令

*/public

class

lightoncommand

implements

command

@override

public

void

execute()

}

/**

具體的物品

*/public

class

light

public

void

turnon()

public

void

turnoff()

}

/**

遙控器類,如果遙控器需要有多個按鈕,可以使用乙個command陣列來作為成員變數。

*/public

class

******remotecontrol

public

void

pressbutton()

}

設計模式之命令設計模式

先來看一下命令模式的類圖 乍一看好像類很多,其實我們逐個分析他們。類圖中存在的類可以分為 invoker icommand conceretecommand receiver invoker類 上層直接調取invoker類 icommand 是對命令的抽象 conceretecommand 是命令的...

設計模式之命令模式

command pattern 將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。命令模式有兩種實現方式 1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。2.在命令管理器中建...

設計模式之命令模式

當我們有一台多功能的印表機,然後通過電腦直接進行任務,如圖 如果通過這樣的設計直接去呼叫多功能一體機的功能,就會存在此時此刻只能進行乙個任務,不允許有多個客戶端同時操作.那麼現在我們就需要考慮一種新的設計模式,叫做命令設計模式。命令設計模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行...