天天看點

設計模式 ——門面模式

“接口隔離”模式

在元件建構過程中,某些接口之間直接的依賴常常會帶來很多問題,甚至根本無法實作。采用添加一層間接(穩定)接口,來隔離本來互相緊密關聯的接口是一種常見的解決方案。

典型模式

  • 門面模式
  • 代理模式
  • 擴充卡
  • 中介者

系統間耦合的複雜度

設計模式 ——門面模式

 方框内部是子系統,外部是客戶系統

動機

  • 上述A方案的問題在于元件的客戶群組件中各種複雜的子系統有了過多的耦合,随着外部客戶程式和各個系統的演化,過多的耦合面臨着很多變化的挑戰。
  • 如何簡化外部客戶程式和系統之間的互動接口?如何将外部客戶程式的演化和内部子系統的變化之間的依賴互相解耦?

模式定義

為子系統中的一組接口提供一個一緻(穩定)的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用(複用)。    —— 《設計模式》GOF

結構

設計模式 ——門面模式

 門面模式沒有固定的代碼結構,它展現的是一種設計原則,注重子系統的變化和外部系統的解耦。

要點總結

  • 從客戶程式的角度來看,Facade模式簡化了整個組價系統的接口,對于元件内部與外部客戶程式來說,達到一種“解耦”的效果——内部子系統的任何變化不會影響到Facade接口的變化。
  • Facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。Facade很多時候更是一種架構設計模式。
  • Facade設計模式并非一個集裝箱,可以任意的放進去任何多個對象。Facade模式中元件的内部應該是“互相耦合關系比較大的一系列元件”,而不是一個簡單的功能集合。