設計模式之外觀模式

2021-06-19 15:12:58 字數 1773 閱讀 6553

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。

這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。

其本質就是將系統與客戶端互動的地方封裝起來。

這個模式,總體來說,很簡單,理解起來也不困難。

依然以手機為例,手機開機的時候,我們只需要按一下電源鍵,在電源鍵的觸發事件中,包含了cpu的開啟、系統載入、sim卡資訊載入等。如果把每乙個模組的介面都暴露出來,讓我們乙個個去按,那豈不是太坑爹了。而現在我們只需要乙個開機介面,就可以實現上述所有模組的通電、載入功能,這就是外觀模式的功效。

首先把開機需要用到的模組以及其載入方法定義一下。

cpu:

1

package org.scott.facade;

2/**3*

@author

scott

4* @date 2013-12-9

5* @description6*/

7public

class cpu

11 }

sim卡:

1

package org.scott.facade;

2/**3*

@author

scott

4* @date 2013-12-9

5* @description6*/

7public

class sim

11 }

系統ui:

1

package org.scott.facade;

2/**3*

@author

scott

4* @date 2013-12-9

5* @description6*/

7public

class ui

11 }

所有子系統的操作都封裝到我們的外觀類中,也就是下面的phone:

1

package org.scott.facade;

2/**3*

@author

scott

4* @date 2013-12-9

5* @description6*/

7public

class phone

1718

public

void start()

25 }

也就是這麼回事,來個測試類客戶端,開機:

1

package org.scott.facade;

2/**3*

@author

scott

4* @date 2013-12-9

5* @description6*/

7public

class facadetest

1314 }

啟動結果:

the phone is starting ...

cpu has started ...

sim card has loaded ...

ui has loaded successfully ...

phone has started successfully!

外觀模式適配模式不同,介面卡模式是把當前類或者物件、介面轉變成符合其他條件的東西,而外觀模式是解決類與類之間的依賴關係的,用來提供子系統的乙個簡化介面。

設計模式之外觀模式

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

設計模式之外觀模式

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

設計模式之外觀模式

1 為了系統中一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。uml圖如下 2 如何使用外觀模式?這要分三個階段來說,首先,在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,就需要考慮在資料訪問層和業務邏輯層,業務邏輯層和表示層的層與層之...