烤羊肉串引來的思考 命令模式

2022-09-15 20:57:22 字數 2815 閱讀 7212

23.1 吃烤羊肉串

23.2 燒烤攤vs燒烤店

行為請求者與行為實現者的緊耦合,

23.3 緊耦合設計

namespace

命令模式

}//烤肉串者

public

class

barbecuer

//烤雞翅

public

void

bakechickenwing()}}

view code

23.4 松耦合設計

namespace

命令模式

}//烤肉串者,

public

class

barbecuer

public

void

bakechickenwing()

}//抽象命令,

public

abstract

class

command

//執行命令,

abstract

public

void

excutecommand();

}//烤羊肉串命令,

class

bakemuttoncommand : command

public

override

void excutecommand() //

執行命令時,執行具體的行為,

}//烤雞翅命令,

class

bakechickenwingcommand : command

public

override

void

excutecommand()

}//服務員,

public

class

waiter

//通知執行,

public

void

notify()}}

view code

23.5 松耦合後

namespace

命令模式

}//烤肉串者,

public

class

barbecuer

public

void

bakechickenwing()

}//抽象命令,

public

abstract

class

command

//執行命令,

abstract

public

void

excutecommand();

}//烤羊肉串命令,

class

bakemuttoncommand : command

public

override

void

excutecommand()

}//烤雞翅命令,

class

bakechickenwingcommand : command

public

override

void

excutecommand()

}//服務員,

public

class

waiter

else

}//取消訂單,

public

void

cancelorder(command command)

//通知全部執行,

public

void

notify()}}

}

view code

23.6 命令模式

將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷的操作,

namespace

命令模式

}//用來宣告執行操作的介面,

abstract

class

command

abstract

public

void

execute();

}//將乙個接收者物件繫結於乙個動作,呼叫接收者相應的操作,以實現execute方法,

class

concretecommand : command

public

override

void

execute()

}//要求該命令執行這個請求,

class

invoker

public

void

executecommand()

}//知道如何實施與執行乙個與請求相關的操作,任何類都可能作為乙個接收者,

class

receiver}}

view code

23.7 命令模式作用

命令模式優點,第一,它能較容易的設計乙個命令佇列,第二,在需要的情況下,可以較容易的將命令記入日誌,第三,允許接收請求的一方決定是否要否決請求,第四,可以容易的實現對請求的撤銷和重做,第五,由於加進新的具體命令類不影響其它的類,因此增加新的具體命令類很容易,最關鍵的優點就是命令模式把請求乙個操作的物件與知道怎麼執行乙個操作的物件分割開,

敏捷開發原則告訴我們,不要為**新增基於猜測的,實際不需要的功能,如果不清楚乙個系統是否需要命令模式,一般就不要著急去實現它,事實上,在需要的時候通過重構實現這個模式並不困難,只有在真正需要如撤銷/恢復操作等功能時,把原來的**重構為命令模式才有意義,

大話設計模式二十三 命令模式(烤羊肉串引來的思考)

命令模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援撤銷操作。抽象命令類 public abstract class command public abstract void excutecommand public barbecuer ge...

命令模式 烤羊肉串引起來的思考

命令模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化 對請求排隊或記錄請求日誌,以及支援可撤銷的操作。命令模式作用 1 它能較容易地設計乙個命令佇列 2 在需要的情況下,可以叫容易地將命令記入日誌3 允許接收請求的一方決定是否要否決請求。4 可以容易地實現對請求的撤銷和重做5 ...

2047 阿牛的EOF羊肉串

problem description 今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面...