外觀模式(Facade Pattern)

2021-08-15 20:26:57 字數 2418 閱讀 9922

外觀模式(facade pattern)隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增乙個介面,來隱藏系統的複雜性。

外觀模式遵循迪公尺特法則:

- 乙個軟體實體應當盡可能少的與其他實體發生相互作用。

外觀模式的核心:

- 為子系統提供統一的介面。封裝子系統的複雜性,便於客戶端呼叫。

facade類:

- 這個外觀類為子系統提供乙個共同的對外介面。

clients:

- 客戶物件通過乙個外觀介面讀寫子系統中各個介面的資料資源。

在以下情況下可以考慮使用外觀模式:

- 設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。

- 開發階段,子系統越來越複雜,增加外觀模式提供乙個簡單的呼叫介面。

- 維護乙個大型遺留系統的時候,可能這個系統已經非常難以維護和擴充套件,但又包含非常重要的功能,為其開發乙個外觀類,以便新系統與其互動。

下面以公司註冊為例說明,沒有外觀類時公司註冊的每個環節客戶端都要親力親為,有了外觀類後,這些事情交給外觀類來完成。

/** * 辦理註冊公司流程的外觀類

*@author match

* */

public

class

registe***cade

}

package com.match.facade;

/** * 工商局

*@author match

* */

public

inte***ce

icb/**

* 上海工商局

*@author match

* */

public

class

shanghaiicb

implements

icb}

package com.match.facade;

/** * 質檢局

*@author match

* */

public

inte***ce

qib/**

* 上海質檢局

*@author match

* */

public

class

shanghaiqib

implements

qib}

package com.match.facade;

/** * 稅務局

*@author match

* */

public

inte***ce

taxbureau

/** * 上海稅務局

*@author match

* */

public

class

shanghaitaxbureau

implements

taxbureau

}package com.match.facade;

/** * 銀行

*@author match

* */

public

inte***ce

bank

/** * 中國工商銀行

*@author match

* */

public

class

icbcbank

implements

bank

}

package com.match.facade;

/** * 客戶端類

*@author match

* */

public

class

client

}

在上海工商局檢查名字是否有衝突。

在上海質檢局辦理組織機構**證。

在上海稅務局辦理稅務登記證。

在中國工商銀行開戶。

設計模式 外觀模式

外觀模式,我的理解就是將複雜的類進行重新封裝,將簡單的介面呈現出來,降低呼叫端和實際類的耦合性。拿 大話設計模式 上邊關於 和 的例子來說。對於不入門的股民來說,交易有些過於龐大,需要學習的東西很多,如果沒整明白就進行投資,很容易賠錢的。很多剛入 的股民都賠的很慘。而買 有提出了乙個新的觀念,我們買...

設計模式 外觀模式

何為外觀模式?外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得一子系統更加容易使用。它是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和 各子系統的演化,這種過多的耦合面臨很多變化的挑戰。uml類圖 乙個...

設計模式 外觀模式

外觀模式說白了就是為一組介面提供乙個一致的介面。例如 定義三個類a b c,每個類各定義乙個方法。class a pubic void showa cout a showa pubic void showb cout b showb pubic void showc cout c showc 定義乙...