1.命令模式的定義
encapsulate a request as an object,there by letting you parameterize clients with different requests,queue or log requests,and support undoable operations.將請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可提供命令的撤銷和恢復功能。
2.命令模式的通用類圖
命令模式通用類圖如下:
在類圖中的三個角色描述如下:
receiver:
命令接受者,執行命令的物件
command:
具體命令的包裝類,所有命令都在此類中宣告
invoker:
接收到命令,並且執行命令,充當管理者的角色
receiver:
public abstract class receiver
concretereceiver:
public class concretereceiver extends receiver
}
command:
public abstract class command
concretecommand:
public class concretecommand extends command
@override
public void executor()
}
invoker:
public class invoker
public void action()
public void setcommand(command command)
}
client:
public class client
}
3.命令模式的優缺點
優點:呼叫者和接受者之間的解藕
command可以有多個子類,可擴充套件性比較高
缺點:當命令比較多的時候,會出現command有n個子類的情況
4.命令模式的使用場景
gui事件監聽、spring的事件監聽、redis的pub/sub等
設計模式之命令設計模式
先來看一下命令模式的類圖 乍一看好像類很多,其實我們逐個分析他們。類圖中存在的類可以分為 invoker icommand conceretecommand receiver invoker類 上層直接調取invoker類 icommand 是對命令的抽象 conceretecommand 是命令的...
設計模式之命令模式
command pattern 將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。命令模式有兩種實現方式 1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。2.在命令管理器中建...
設計模式之命令模式
當我們有一台多功能的印表機,然後通過電腦直接進行任務,如圖 如果通過這樣的設計直接去呼叫多功能一體機的功能,就會存在此時此刻只能進行乙個任務,不允許有多個客戶端同時操作.那麼現在我們就需要考慮一種新的設計模式,叫做命令設計模式。命令設計模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行...