設計模式之外觀模式

2021-08-21 07:19:04 字數 1268 閱讀 8484

今天我們分享的是外觀模式

外觀模式為系統中的一組介面提供了乙個一致的介面,此模式定義了乙個高層介面,這個介面使得子系統更容易使用

目的:在軟體系統開發的過程中,當元件的客戶(即外部介面,或客戶程式)和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。

依賴顛倒原則和迪公尺特法則

外觀模式包含如下兩個角色:

(1)、外觀角色(facade):在客戶端可以呼叫它的方法,在外觀角色中可以知道相關的(乙個或者多個)子系統的功能和責任;在正常情況下,它將所有從客戶端發來的請求委派到相應的子系統去,傳遞給相應的子系統物件處理。

(2)、子系統角色(subsystem):在軟體系統中可以有乙個或者多個子系統角色,每乙個子系統可以不是乙個單獨的類,而是乙個類的集合,它實現子系統的功能;每乙個子系統都可以被客戶端直接呼叫,或者被外觀角色呼叫,它處理由外觀類傳過來的請求;子系統並不知道外觀的存在,對於子系統而言,外觀角色僅僅是另外乙個客戶端而已。

外觀模式的優點:

外觀模式對客戶遮蔽了子系統元件,從而簡化了介面,減少了客戶處理的物件數目並使得子系統的使用更簡單

實現了子系統與客戶之間的松耦合關係,而子系統內部功能元件是緊耦合。

缺點:如果增加新的子系統可能需要修改外觀類或客戶端的源**,違背了開---閉原則

例如:我們玩的遊戲:

有技能,裝備,經脈效果

外觀類:人物

使用技能1:

附加裝備效果

附加經脈加成

使用技能1

使用技能2:

附加裝備效果

附加經脈效果

使用技能2

客戶端呼叫:

人物使用技能1

人物使用技能2

使用環境:

構建乙個有層次結構的子系統時,使用外觀模式定義子系統中每層的入口點,如果子系統之間是相互依賴的,則可以讓他們通過外觀介面進行通訊,減少子系統之間的依賴關係。

子系統往往會因為不斷的重構演化而變得越來越複雜,大多數的模式使用時也會產生很多很小的類,這給外部呼叫他們的使用者程式帶來了使用的困難,我們可以使用外觀類提供乙個簡單的介面,對外隱藏子系統的具體實現並隔離變化。

當維護乙個遺留的大型系統時,可能這個系統已經非常難以維護和拓展,但因為它含有重要的功能,新的需求必須依賴於它,則可以使用外觀類,來為設計粗糙或者複雜的遺留**提供乙個簡單的介面,讓新系統和外觀類互動,而外觀類負責與遺留的**進行互動。

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...

設計模式之外觀模式

外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...