外观模式讲解
我們來學一下外觀模式,外觀模式又叫門面模式,提供了一個統一的接口,用來訪問子系統的一群接口,那外觀模式定義了一個高層接口,讓子系統更容易使用,類型是結構型的,那這里面有幾個角色,一個是外觀角色,他了解子系統所有的方法,外觀角色他也有自己的方法,客戶端他通過調用外觀角色的方法呢,來調用子系統的功能,那這里面還有個關鍵字,子系統,那子系統可以是一個,可以是多個,子系統按照不同的維度,分成不同的處理模塊,并不是單獨的類,那子系統形成一個集合,為外觀模式的外觀類,提供子系統的服務,那么接著看一下,外觀模式的應用場景,當子系統越來越復雜,這個時候增加外觀模式呢,能提供簡單調用的接口,還有當我們構建多層系統結構的時候,利用外觀對象作為每層的入口,簡化層間調用,那一會我們coding的時候,領著大家來體會,還是很容易理解的
那我們看一下外觀模式的優點是什么呢,簡化了調用過程,無需深入的了解子系統,防止帶來風險,這里所說的防止帶來風險,也非常好理解,對于某個功能我們只要集成到一起就可以了,無需修改子系統,不修改它也就不會帶來風險,減少系統以來,松散耦合,外觀模式松散了客戶端和子系統的耦合關系,客戶端不與子系統直接交流,客戶端和外觀對象進行交流,讓子系統內部的模塊很容易擴展和維護,通過使用外觀模式,幫我們更好地劃分訪問層次,那有些方法呢,是系統外部的,有些方法呢,是系統內部的,我們把需要暴露給外部的功能集中到外觀類上,這樣既方便客戶端調用,也能很好隱藏內部細節,同時外觀模式符合迪米特法則,即最少知道原則,客戶端不需要了解子系統內部的實現,也不需要和眾多子系統模塊進行交互,只要和外觀類交互就可以了
外觀模式的缺點是什么呢,幫我們增加子系統,擴展子系統行為的時候,容易引入風險,另外在我們增加子系統,和擴展子系統行為的時候,是不符合開閉原則的
我們看一下和外觀模式相關的設計模式,首先外觀模式和中介者模式,那在這里我們還沒有講中介者模式,但是也先介紹一下,后續回來可以看一下,那他們兩個本質上的區別呢,說外觀模式關注的是外界子系統之間的交互,而中介者模式呢,關注的是子系統內部的交互,另外是外觀模式和單例模式,通常我們可以把外部模式中的外觀對象做成單例模式的結合使用,還有外觀模式和抽象工廠模式,那外觀類可以通過抽象工廠獲取子系統的例,這樣呢子系統可以將內部外觀類進行屏蔽,這個也是設計模式結合使用的一種方式
接下來我們會一起來coding,來看一下UML,還有外觀模式相關的源碼解析
?
總結
- 上一篇: 原型模式源码解析
- 下一篇: 外观模式coding