命令模式:將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
命令模式作用:1、它能較容易地設計乙個命令佇列;2、在需要的情況下,可以叫容易地將命令記入日誌3、允許接收請求的一方決定是否要否決請求。4、可以容易地實現對請求的撤銷和重做5、由於加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易。
最關鍵的優點就是命令模式把請求乙個操作的物件與知道怎麼執行乙個操作的物件分隔開。
以下是**示例:
1//invoker類,要求該命令執行這個請求
2public
class
invoker
7public
void
executecommand()
10 }
1//command類,用來宣告執行操作的介面.
2public
abstract
class
command
8 //執行命令
9abstract
public
void
execute();
10 }
1//concretecommand類,將乙個接收者物件繫結於乙個動作,呼叫接收者相應操作,以實現execute。
2public
class concretecommand extends
command78
//執行命令
9@override
10public
void
execute()
1314 }
1//receiver類,知道如何實施與執行乙個與請求相關的操作,任何類都可能作為乙個接收者。
2public
class
receiver
7 }
1uml圖://客戶端測試類
2public
class
testclinet
10 }
烤羊肉串引來的思考 命令模式
23.1 吃烤羊肉串 23.2 燒烤攤vs燒烤店 行為請求者與行為實現者的緊耦合,23.3 緊耦合設計 namespace 命令模式 烤肉串者 public class barbecuer 烤雞翅 public void bakechickenwing view code 23.4 松耦合設計 na...
大話設計模式二十三 命令模式(烤羊肉串引來的思考)
命令模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援撤銷操作。抽象命令類 public abstract class command public abstract void excutecommand public barbecuer ge...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...