立面圖案的使用
回答
門面處理接口,而不是實現。它的目的是隱藏內部簡單的界面,看起來很簡單。在你的問題的例子中,Facade在一個方法後面隱藏了四個類(Order,OrderLine,Address,BasketItem)。
模板方法處理實現。其目的是從幾個不同的'通過填空'方式提取常用算法。超類中的模板方法實現了通用算法,每個子類都以自己特定的方式「填充空白」。
那麼爲什麼作者不使用模板模式?
如果有幾個相似版本的操作,那麼將placeOrder
作爲模板方法是有意義的。也許有幾種方法,如placePhoneOrder
,placeInternetOrder
,placeManuallyEnteredOrder
可以重構爲單個模板placeOrder
,某些子類僅實現{手機,互聯網,手動}特定的差異。
非常好!我從中找到了我所需要的。 – anonymous 2009-11-23 09:34:37
假設你有一些服務,庫或其他。這些庫需要互操作才能執行一些更高級別的服務。然後,您可能希望將這些調用和初始化代碼封裝在一起,並提供一些功能來隱藏這些細節,並使這些服務在特定情況下使用變得簡單。那麼這對於門面模式很有用。
更新:在文章中提到的PlaceOrder方法有一個適用於所有訂單的單一實現。模板模式旨在規定一系列必須遵循的步驟,但允許子類提供這些固定步驟的定製實現。例如,如果您需要處理與電視訂單不同的微波訂單,您可以使用模板模式重新定義一些想象中的DispatchParcel方法(將微波作爲簡單包發送,但電視具有額外服務以幫助將重型設備提升到上層)。在我們的例子中,不需要重新實現ProcessOrder步驟,因此不需要模板模式,因爲一個實現適用於所有類型的訂單。
當您想要以簡化的方式向客戶展示一個複雜的系統,或者希望在與您的系統不兼容的現有系統上創建外部通信層時,外觀模式是適當的。這是一個結構模式。在這裏看到:http://en.wikipedia.org/wiki/Facade_pattern
模板模式,在另一方面,是行爲模式與內部實現的構件的問題時,這將幫助你。看到這裏:http://en.wikipedia.org/wiki/Template_method_pattern
- 1. PHP立面圖案
- 2. 如何使用立面設計圖案
- 3. 設計圖案 - 立面
- 4. 立面圖案和其他圖案之間的差異
- 5. 立面圖案,這可以嗎?
- 6. 立面圖案vs委託圖案;在Java中?
- 7. 立面圖案和abstarct工廠圖案之間有什麼區別?
- 8. 立案
- 9. 使用如圖案
- 10. 使用ggplot2的方案圖
- 11. 使用gridExtra和grid.pattern對齊面板上的圖案
- 12. 使用Spotify IOS SDK獲取每首曲目的封面圖案?
- 13. RegSaveKeyEx需要立面圖嗎?
- 14. 面部圖案識別
- 15. SVG圖案剪貼面罩
- 16. 近似圖案,使用R
- 17. 建立wordpress的檔案頁面與分頁
- 18. Fogbugz案例 - 使用Scoutsubmit.asp創建案例給用戶頁面
- 19. 調用未定義的方法干預\圖片\外立面\圖片::使()
- 20. 鏈接問題 - 試圖建立一個庫,並使用另一個檔案
- 21. 建立使用c的網站地圖#
- 22. 建立檔案不起作用
- 23. 使用Java語言編寫的圖案
- 24. 使用html canvas的點圖案
- 25. 更換使用awk圖案或sed的
- 26. 關於System Hotel的使用案例圖
- 27. 建立檔案路徑樹
- 28. Symfony2 - 建立博客檔案
- 29. 案例獨立分揀
- 30. SDWebImage建立檔案(分發)?
通過在正面和模板之間畫線,你的意思是什麼?外觀是一種結構模式,模板是一種行爲模式 - 我不知道你如何將兩者聯繫起來? – RichardOD 2009-11-23 08:52:37