外觀模式,實際上是我在開源軟體zstack中發現在其中進行了運用的。那什麼是外觀模式呢?
外觀模式,實際上有點像肯德基的點餐視窗。我們在需要吃飯的時,只需要在視窗給店員說:我需要飲料和麵包,而不用關心後廚如何去從飲料機接飲料、從麵包機拿麵包等等。「前台」就是我們所定義的外觀模式。
因此外觀模式的優點顯而易見,那就是可以遮蔽調後面複雜的子系統,只需要使用統一的介面就好。當後台系統發生更換的時候,前台也不用更換。這樣就可以降低使用的複雜度,能夠更好地維護程式。
zstack在系統中大量運用了外觀模式。如restful的訪問,非同步post訪問,timer設定等等,都是用外觀模式進行的包裝組合。
上圖來自引用「這副圖是一片部落格中的圖,畫的非常清晰明了。在多個子系統之上,定義了乙個外觀類,用於統一訪問子系統,提供統一的介面。client只需要於外觀類互動就行了。
具體來講,外觀模式包含如下三個部分:
1.當子系統比較多時,可以對某些客戶提供已經打包組裝好的服務,就可以用外觀類統一打包。對於少數需要個性化組合的客戶,可以單獨再組合。2.在構建層次結構時,外觀類可以作為每個層次的入口
3.可以促進系統的解耦。
看上去外觀模式很好,但是也是有問題的。
1.對於子系統的控制不是很靈活。控制太多也較少可變性。控制太少,那他本身的意義也不是很大。
2.如果在需要新增加子系統時,可能需要修改外觀類源瑪,違反「開閉原則」
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...