外觀模式:統一接口 VS.暴露細節

什麼是接口——java語言中的接口

Java類中定義的所有public型的方法都可以被簡單地視為該類對外提供的接口。

抽象類中public型的抽象方法,可以被看成是整棵繼承樹的對外接口。


外觀模式:統一接口 VS.暴露細節


外觀模式:統一接口 VS.暴露細節


外觀模式:統一接口 VS.暴露細節

對於Java語言,針對接口編程就是指針對interface類型的編程。

什麼是接口——c++語言的接口

由於沒有提供interface類型,對於C++語言來說,針對接口的編程更多指的是針對抽象類的編程。

外觀模式

一個子系統有多個不同的類,或有多棵繼承樹時。

外觀模式——設計意圖

外觀模式可以為一個子系統中的多個類提供統一的接口。外觀模式定義了一個高層次的接口,並使一個子系統更易於使用。

把一個組件單元構建成一個子系統有助於減少軟件的複雜性,而且可以使子系統和其他組件的通信關係更簡潔、更容易控制,可以最大幅度地降低組件之間的耦合度。

外觀模式——基本結構


外觀模式:統一接口 VS.暴露細節

子系統的接口不一定是具體的外觀類,它和外觀類之間的關係:

(1)子系統的接口是一個抽象類,不包含任何屬性和具體實現,其中定義的所有的接口函數都是純虛函數;而外觀類是該抽象類的派生類,隱藏在子系統中。在這種實現方式中,客戶程序所看到的只有一個純粹的接口,而具體的實現都被外觀類封裝到了子系統的內部。

(2)子系統的接口就是外觀類的頭文件,客戶程序可能會看到一些外觀類的私有屬性和私有方法。

外觀類一般應以單件類的形式出現,這樣,客戶程序就可以通過單件類的靜態方法獲得子系統的唯一接口實例。

外觀類要負責創建和銷燬子系統中其他的相關對象,管理其他對象的生命週期。

對於一個子系統來說,外觀類就是這個子系統的邊界類。


總結

外觀模式是面向對象編程中的關鍵模式,也是封裝子系統實現細節的有效手段。


分享到:


相關文章: