概述
外部與內部子系統通信時必須通過的一個統一的外觀模式對象進行,就是外觀模式,也稱門面模式。一般而言,Facade模式是為了降低客戶端與實現化層之間的依賴性。外觀模式的用意是為子系統提供一個集中化和簡化的溝通渠道。
UML類圖
在上面的UML圖中,出現三個角色:
客戶端角色(Client):用戶通過客戶端來調用外觀模式的類,從而來操作子系統;
外觀角色(Facade):客戶端可以調用這個類,此類中包含了調用子系統中具體的功能;
子系統角色(Module):定義了子系統中具體的單個功能;
代碼示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package interview; class ModuleA { public void testA(){ System.out.println( "ModuleA 中的方法" ); } } class ModuleB { public void testB(){ System.out.println( "ModuleB 中的方法" ); } } class ModuleC { public void testC(){ System.out.println( "ModuleC 中的方法" ); } } class Facade{ public void testA(){ ModuleA moduleA = new ModuleA(); moduleA.testA(); } public void testB(){ ModuleB moduleB = new ModuleB(); moduleB.testB(); } public void testC(){ ModuleC moduleC = new ModuleC(); moduleC.testC(); } } public class MainTest { public static void main(String arg[]) { Facade facade = new Facade(); facade.testA(); facade.testB(); facade.testC(); } } |
上述代碼中Facade類充當了ModuleA ,ModuleB,ModuleC模塊的外觀界面,通過這個類,客戶端不需要親自調用子系統的ABC模塊,也不需要知道系統內部的細節(jié),從而更好的實現了客戶端與系統的解耦。
同時,使用外觀模式,還可以選擇性的暴露方法,一個模塊中定義的方法可以分成兩部分,一部分是給子系統外部使用的,一部分是子系統內部模塊之間相互調用時使用的。
外觀模式的優(yōu)點
外觀模式松散了客戶端與子系統的耦合關系,讓子系統內部的模塊能更容易擴展和維護。
讓子系統更加易用,客戶端不再需要了解子系統內部的實現,也不需要跟眾多子系統內部的模塊進行交互,只需要跟外觀類交互就可以了。
可以幫助我們更好地劃分訪問的層次。有些方法是對系統外的,有些方法是系統內部使用的。把需要暴露給外部的功能集中到門面中,這樣既方便客戶端使用,也很好地隱藏了內部的細節(jié)。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。