設計模式之命令模式

2021-10-09 20:06:16 字數 1948 閱讀 7822

1.現實語義中具備"命令"的操作(如命令選單,shell命令);

2.請求呼叫者和請求的接收者需要解耦,使得呼叫者和接收者不直接互動;

3.需要抽象出等待執行的行為,比如撤銷(undo)操作和恢復(redo)等操作;

4.需要支援命令巨集(即命令組合操作).1.通過引入中介軟體(抽象介面),解耦了命令請求與實現;

2.擴充套件性良好,可以很容易地增加新命令;

3.支援組合命令,支援命令佇列;

4.可以在現有命令的基礎上,增加額外功能(比如日誌記錄...,結合裝飾器模式更好)1.具體命令類可能過多;

2.增加了程式的複雜度,理解更加困難.一般用法

public

inte***ce

icommand

public

class

receiver

}

public

class

invoker

public

void

action()

}

public

class

concretecommand

implements

icommand

}

public

class

test

}

public

inte***ce

iaction

public

class

myplayer

public

void

speed()

public

void

stop()

public

void

pause()

}

public

class

pauseaction

implements

iaction

@override

public

void

execute()

}

public

class

playaction

implements

iaction

@override

public

void

execute()

}

解偶

public

class

speedaction

implements

iaction

@override

public

void

execute()

}

public

class

stopaction

implements

iaction

@override

public

void

execute()

}

public

class

controller

public

void

execute

(iaction action)

public

void

executes()

actions.

clear()

;}}

public

class

test

}

設計模式之命令設計模式

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

設計模式之命令模式

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

設計模式之命令模式

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