狀態(tài)模式(Command Pattern)
1. 概念
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
將請求封裝成對象,以便使用不同的請求、隊列镀脂、或日志將客戶端參數(shù)化铸董,同時提供可撤銷功能联四。
2. 應(yīng)用場景 --比如任務(wù)Runnable.run()和Callable.call()
命令模式可以將“動作的請求者”從“動作的執(zhí)行者”對象中解耦扰才;被解耦的二者之間通過命令對象進(jìn)行溝通雄右。
3. 優(yōu)點
a. 解耦:Invoker和Receiver完全解耦蹬耘,不需要直接溝通芝雪。Command對象中封裝了Receiver,及其要做的事情综苔。
b. 可擴(kuò)展:日后增加Command的子類惩系,即可增加功能。
c. 可結(jié)構(gòu)其他模式如筛,例如責(zé)任鏈模式堡牡、模板方法模式。
4. 缺點
Command子類可能會非常多杨刨。(可結(jié)合模板方法模式解決)
5. 代碼實踐:
JDK:?
??java.lang.Runnable
??javax.swing.Action
Android:?TBD