外觀模式是一種使用頻率非常高的結構型設計模式,當你要為乙個複雜子系統提供乙個簡單介面時。子系統往往因為不斷演化而變得越來越複雜。大多數模式使用時都會產生更多更小的類。這使得子系統更具可重用性,也更容易對子系統進行定製,但這也給那些不需要定製子系統的使用者帶來一些使用上的困難。facade可以提供乙個簡單的預設檢視,這一檢視對大多數使用者來說已經足夠,而那些需要更多的可定製性的使用者可以越過facade層外觀模式(facade pattern)
屬於結構型模式
的一種,為子系統中的一組介面提供乙個統一的入口,它通過引入乙個外觀角色
來簡化客戶端與子系統之間的互動...
如下圖:
購物場景中,我們要呼叫產品(product)
和支付(pay)
等服務,這時候面對了多個複雜的業務,怎麼樣通過模式來解決?
建立productservice
和payservice
class productservice
}class payservice
}
定義外觀類facadeorder
由它統一呼叫,客戶端無需關心具體實現
class facadeorder
public void buyphone()
}
建立測試類client
public class client
}
執行結果
挑選小公尺mix2尊享版
新增購物車
支付4799元
細心的朋友會發現,該模式應用其實非常之廣泛,與我們平時寫的dao->service->controller
是不是很相像呢
優點
缺點
與介面卡模式的區別
介面卡模式
是將乙個物件包裝起來以改變其介面,而外觀模式
是將一群物件包裝起來以簡化其介面。介面卡是將介面轉換為不同介面,而外觀模式是提供乙個統一的介面來簡化介面。
全文**:
battcn開源群(適合新手):391619659
一起學設計模式 組合模式
組合模式 composite pattern 屬於結構型模式的一種,組合多個物件形成樹形結構來表示部分 整體的結構層次,對單個物件 葉子物件 和組合物件 容器物件 的使用具有一致性 組合模式對單個物件 葉子物件 和組合物件 容器物件 具有一致性,它將物件組織到樹結構中,可以用來描述整體與部分的關係。...
一起學設計模式 建造者模式
建造者模式 builder pattern 屬於建立型模式的一種,將多個簡單物件構建成乙個複雜的物件,構建過程抽象化,不同實現方法可以構造出不同表現 屬性 的物件,還提供了一種更加優雅構建物件的方式 有時候構建乙個複雜的物件,需要經過好幾步的處理,比如常用的stringbuffer stringbu...
一起學設計模式 02 工廠模式
如果你還沒了解六大軟體設計原則的話,建議先谷歌下,再來學習設計模式。這對理解設計模式和記憶設計模式的經典寫法都會有很大幫助。學習設計模式,光是記寫法沒有意義,要學習的是設計思想,為什麼要這麼做,這麼做的好處是什麼。懷著這兩個問題來學習設計模式,你會發現六大軟體設計原則在設計模式中的應用,相應的也會加...