Java設計模式8 外觀模式

2021-08-28 19:34:07 字數 2186 閱讀 7833

外觀模式隱藏了系統的複雜性,並向客戶端提供了乙個可以訪問系統的介面。這種型別的設計模式屬於結構性模式。為子系統中的一組介面提供了乙個統一的訪問介面,這個介面使得子系統更容易被訪問或者使用。 

1、外觀角色:外觀模式的核心。它被客戶角色呼叫,它熟悉子系統的功能。內部根據客戶角色的需求預定了幾種功能的組合。

2、子系統角色:實現了子系統的功能。它對客戶角色和facade時未知的。它內部可以有系統內的相互互動,也可以由供外界呼叫的介面。

3、通過呼叫facede來完成要實現的功能。

先模擬三個子系統modulea、moduleb、modulec:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/10/8 11:53

* @desc : 模擬子系統modulea

* @version: 1.0

*

*/

public class modulea

}

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/10/8 14:12

* @desc : 模擬子系統moduleb

* @version: 1.0

*

*/

public class moduleb

}

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/10/8 14:13

* @desc : 模擬子系統modulec

* @version: 1.0

*

*/

public class modulec

} 再建立乙個外觀物件:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/10/8 14:15

* @desc : 模擬乙個外觀類(核心)

* @version: 1.0

*

*/

public class facade

public void dosomething()

} 客戶端呼叫一下外觀角色:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/10/8 14:23

* @desc : 客戶端呼叫

* @version: 1.0

*

*/

public class client

} 這樣,客戶端不需要親自呼叫子系統的a、b、c模組了,也不需要知道內部系統的實現細節,甚至不需要知道模組a、模組b、模組c的存在,只需要和facade類互動就好了,從而更好地實現了客戶端和子系統中的三個模組的解耦,讓客戶端更容易地使用子系統。

另外,定義乙個外觀類還可以有效地遮蔽內部的細節。因為子系統中有一些方法,是模組之間相互互動用的,並不需要外部呼叫。如果直接呼叫子系統的類方法,會出現一些不需要客戶端知道的方法,這樣既暴露了內部細節,又讓客戶端模迷惑。外觀類就不一樣了,可以只給客戶端提供那些子系統給外部使用的方法。

1、鬆散耦合

外觀模式鬆散了客戶端和子系統的耦合關係,讓子系統內部的模組能更容易擴充套件和維護

2、簡單易用

客戶端不需要了解系統內部的實現,也不需要和眾多子系統內部的模組互動,只需要和外觀類互動就可以了

3、更好地劃分層次

通過合理使用facade,可以幫助我們更好地劃分層次。有些方法是系統對內的,有些方法是對外的,把需要暴露給外部的功能集中到facade中,這樣既方便客戶端使用,也很好地隱藏了內部的細節

設計模式8 外觀模式

為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這個子系統更加容易使用。public class subsystemone public class subsystemtwo public class subsystemthree public class subsys...

設計模式 8 外觀模式

定義 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得子系統更加容易使用。使用場景 當子系統的介面過於複雜時,比如經典的三層架構,就需要考慮在資料訪問層和業務邏輯層,業務邏輯層和表示層的層與層之間建立外觀。以達到簡化目的,降低耦合 實現 建立外觀類,聚合子系統各個介面,...

Java設計模式 外觀模式

外觀模式 facade 外觀模式的意圖是 為子系統提供乙個介面,便於它的使用。解釋 簡單的說,外觀模式就是封裝多個上層應用需要的方法,使得上層呼叫變得簡單,為上層提供簡單的介面,是設計模式中一種比較簡單的設計思想,但是,也是最常用的一種設計模式。舉例 當你想吃橘子的時候,你需要做那幾件事呢?1 去買...