模式定義:
外觀模式(Facade Pattern)隱藏系統(tǒng)的復(fù)雜性友浸,并向客戶端提供了一個(gè)客戶端可以訪問系統(tǒng)的接口。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式泞遗,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口旷太,來隱藏系統(tǒng)的復(fù)雜性。
這種模式涉及到一個(gè)單一的類批旺,該類提供了客戶端請(qǐng)求的簡(jiǎn)化方法和對(duì)現(xiàn)有系統(tǒng)類方法的委托調(diào)用幌陕。
為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口汽煮,這個(gè)接口使得這一子系統(tǒng)更加容易使用搏熄。
降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度棚唆,簡(jiǎn)化客戶端與之的接口。
1心例、客戶端不需要知道系統(tǒng)內(nèi)部的復(fù)雜聯(lián)系宵凌,整個(gè)系統(tǒng)只需提供一個(gè)"接待員"即可。
2止后、定義系統(tǒng)的入口瞎惫。
客戶端不與系統(tǒng)耦合,外觀類與系統(tǒng)耦合译株。
在客戶端和復(fù)雜系統(tǒng)之間再加一層瓜喇,這一層將調(diào)用順序、依賴關(guān)系等處理好歉糜。
實(shí)現(xiàn)
我們將創(chuàng)建一個(gè) Shape 接口和實(shí)現(xiàn)了 Shape 接口的實(shí)體類乘寒。下一步是定義一個(gè)外觀類 ShapeMaker。
ShapeMaker 類使用實(shí)體類來代表用戶對(duì)這些類的調(diào)用匪补。FacadePatternDemo肃续,我們的演示類使用 ShapeMaker 類來顯示結(jié)果。
源碼:代碼倉庫
總結(jié):
1叉袍、減少系統(tǒng)相互依賴始锚。
2、提高靈活性喳逛。
3瞧捌、提高了安全性。
不符合開閉原則润文,如果要改東西很麻煩姐呐,繼承重寫都不合適。
1典蝌、為復(fù)雜的模塊或子系統(tǒng)提供外界訪問的模塊曙砂。
2、子系統(tǒng)相對(duì)獨(dú)立骏掀。
3鸠澈、預(yù)防低水平人員帶來的風(fēng)險(xiǎn)。
在層次化結(jié)構(gòu)中截驮,可以使用外觀模式定義系統(tǒng)中每一層的入口笑陈。
參考:菜鳥教程