设计模式外观模式-不解释

外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义类一个高层接口,让子系统更容易使用

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
* 外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义类一个高层接口,让子系统更容易使用
* 外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器是将接口转化成不同接口
* 外观不只是简化了接口,也将客户从组件的子系统中解耦
* <p>
* ***************
* 当需要使用一个现有的类而起接口并不符合你的需要时,就使用适配器
* 当需要简化并统一一个很大的接口或是一群复杂的接口是,使用外观
* 适配器改变接口符合客户的期望
* 外观将客户从一个负责的子系统中解耦
* 实现一个外观,需要将系统组合进外观中,然后工作委托给子系统执行
* 适配器模式两种模式: 对象适配,类适配
* 适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来简化其接口
* ***************
* <p>
*/
public class FacadePattern {
public static void main(String args[]) {
//客户端调用
OperationFacade facade = new OperationFacade();
facade.run();
}
}
//外观
class OperationFacade {
private SubSystemA subSystemA;
private SubSystemB subSystemB;
private SubSystemC subSystemC;
public OperationFacade() {
subSystemA = new subSystemAImpl();
subSystemB = new subSystemBImpl();
subSystemC = new SubSystemC();
}
public void run() {
subSystemA.methodA();
subSystemB.methodB();
subSystemC.methodC();
}
}
interface SubSystemA {
void methodA();
}
interface SubSystemB {
void methodB();
}
class subSystemAImpl implements SubSystemA {
@Override
public void methodA() {
System.out.println("subSystemAImpl ==> methodA");
}
}
class subSystemAAImpl implements SubSystemA {
@Override
public void methodA() {
System.out.println("subSystemAAImpl ==> methodA");
}
}
class subSystemBImpl implements SubSystemB {
@Override
public void methodB() {
System.out.println("subSystemBImpl ==> methodB");
}
}
class SubSystemC {
public void methodC() {
System.out.println("subSystemC ==> methodC");
}
}