一起學設計模式 外觀模式

2021-09-14 06:31:01 字數 1475 閱讀 3718

外觀模式(facade pattern)屬於結構型模式的一種,為子系統中的一組介面提供乙個統一的入口,它通過引入乙個外觀角色來簡化客戶端與子系統之間的互動...

外觀模式是一種使用頻率非常高的結構型設計模式,當你要為乙個複雜子系統提供乙個簡單介面時。子系統往往因為不斷演化而變得越來越複雜。大多數模式使用時都會產生更多更小的類。這使得子系統更具可重用性,也更容易對子系統進行定製,但這也給那些不需要定製子系統的使用者帶來一些使用上的困難。facade可以提供乙個簡單的預設檢視,這一檢視對大多數使用者來說已經足夠,而那些需要更多的可定製性的使用者可以越過facade層

如下圖:

購物場景中,我們要呼叫產品(product)支付(pay)等服務,這時候面對了多個複雜的業務,怎麼樣通過模式來解決?

建立productservicepayservice

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 工廠模式

如果你還沒了解六大軟體設計原則的話,建議先谷歌下,再來學習設計模式。這對理解設計模式和記憶設計模式的經典寫法都會有很大幫助。學習設計模式,光是記寫法沒有意義,要學習的是設計思想,為什麼要這麼做,這麼做的好處是什麼。懷著這兩個問題來學習設計模式,你會發現六大軟體設計原則在設計模式中的應用,相應的也會加...