個人理解--代理模式和命令模式區別


最近在看《大話設計模式》時,書中介紹代理模式用了拜託他人追美眉的例子,介紹命令模式用了通過服務員點燒烤的例子,看完就覺得都是通過一箇中間人達到最終目的,於是產生了對這兩種設計模式的區別的思考,以下時自己的一些總結,不知道對不對,用來幫助自己理解吧
1.類別不同:
代理模式屬於“結構型模式”,命令模式屬於“行爲型模式”,相關解釋摘抄如下:參考https://www.cnblogs.com/justForMe/archive/2011/07/18/2109211.html
1.1創建型模式
能夠高效地創建對象就是創建型模式要探討的問題。
1.2結構型模式
在解決了對象的創建問題之後,對象的組成以及對象之間的依賴關係就成了開發人員關注的焦點,因爲如何設計對象的結構、繼承和依賴關係會影響到後續程序的維護性、代碼的健壯性、耦合性等。
1.3行爲型模式
在對象的結構和對象的創建問題都解決了之後,就剩下對象的行爲問題了,如果對象的行爲設計的好,那麼對象的行爲就會更清晰,它們之間的協作效率就會提高。
所以,從上面的解釋可以看出,代理模式(結構型)是負責解決對象的結構,其優化對象是類,命令模式更關注對象的行爲,因此其優化對象時類中的方法。
2.具體代碼實現不同
統一以燒烤爲例實現代理模式和命令模式,代碼結構如圖:

è¿éåå¾çæè¿°

如圖中所示,當把命令模式中的Waiter類改名爲Proxy類,把Barbecuer類改名爲RealCommand類時,其實兩種模式相差不遠,但是類結構不一樣,命令模式中烤雞腿(ChickenCommand)和烤羊肉(MuttonCommand)是分開的,而代理模式中全在RealCommnd類中,變成了兩個方法。也就是說,代理模式關注的時類結構,當擴展時,需要增加實現了commnd接口的類,並且相應地增加Proxy類,一個Proxy代理對應一個RealCommand,而在行爲模式中,擴展時只需要增加另外的實現了Command接口的類即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章