設計模式之命令模式

2021-10-03 14:50:52 字數 2464 閱讀 3663

1.需求

2.分析需求

同時可以考慮使用命令模式

3.命令模式的基本介紹

命令模式(command pattern),可以將乙個請求封裝為乙個物件,以便於使用不同引數表達不同的請求。

命令模式使得請求傳送者和接收者之間消除彼此的耦合,讓物件之間的呼叫關係變得靈活

命令模式中存在的角色:

4.「遙控器」的**實現

//建立命令介面(命令的抽象)

public

inte***ce

mycommand

//具體命令類

/** * 沒有任何命令,即空執行:用於初始化狀態【預設】

* 使用nocommand 可以省略對空的判斷

* */

public

class

nocommand

implements

mycommand

@override

public

void

execute()

@override

public

void

undo()

}//命令物件(內部聚合了receiver進行具體操作)

//關燈操作

public

class

lightoffcommand

implements

mycommand

@override

public

void

execute()

@override

public

void

undo()

}//命令物件(內部聚合了接收者進行具體操作)

//開燈操作

public

class

lightoncommand

implements

mycommand

@override

public

void

execute()

@override

public

void

undo()

}//抽象接收者

//receiver

public

inte***ce

myreceiver

//具體的接收者

public

class

lightreceiver

implements

myreceiver

public

void

off(

)}

/**

* invoker

* 命令的傳送者:內部放置了多個命令

*/public

class

remoteinvoker

}//給按鈕設定需要的命令即可

//!!!!給控制器動態設定指令

public

void

setcommand

(int no, mycommand oncommand, mycommand offcommand)

//按下開的按鈕

public

void

onbuttonwaspushed

(int no)

//按下關的按鈕

public

void

offbuttonwaspushed

(int no)

//按下撤銷按鈕

public

void

undobuttonwaspushed()

}

//測試類

public

class

client

}

執行結果:

命令模式的細節

命令模式的使用環境:

設計模式之命令設計模式

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

設計模式之命令模式

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

設計模式之命令模式

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