Skip to content

Commit 8bb1706

Browse files
author
Liu Yuning
committed
add facade DP
1 parent 4ceccea commit 8bb1706

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package designpattern.facade;
2+
3+
/**
4+
* 外观类,它需要了解所有的子系统的方法或属性,进行组合,以备外界调用
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class Facade {
10+
SubSystemOne subSystemOne;
11+
SubSystemTwo subSystemTwo;
12+
SubSystemThree subSystemThree;
13+
SubSystemFour subSystemFour;
14+
15+
public Facade() {
16+
subSystemOne = new SubSystemOne();
17+
subSystemTwo = new SubSystemTwo();
18+
subSystemThree = new SubSystemThree();
19+
subSystemFour = new SubSystemFour();
20+
}
21+
22+
public void methodA() {
23+
System.out.println("方法组A:");
24+
25+
subSystemOne.methodOne();
26+
subSystemTwo.methodTwo();
27+
subSystemFour.methodFour();
28+
}
29+
30+
public void methodB() {
31+
System.out.println("方法组B:");
32+
33+
subSystemThree.methodThree();
34+
subSystemFour.methodFour();
35+
}
36+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package designpattern.facade;
2+
3+
/**
4+
* 外观类客户端
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class FacadeClient {
10+
public static void main(String[] args) {
11+
// 由于Facade的作用,客户端可以根本不知道四个子系统的存在
12+
// 启发:维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,此时可以
13+
// 为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单
14+
// 的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作
15+
Facade facade = new Facade();
16+
17+
facade.methodA();
18+
facade.methodB();
19+
}
20+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package designpattern.facade;
2+
3+
/**
4+
* “系统”接口,只是标记接口,暂无任何意义
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public interface SystemInterface {
10+
11+
}
12+
13+
class SubSystemOne implements SystemInterface {
14+
public void methodOne() {
15+
System.out.println("子系统方法一");
16+
}
17+
}
18+
19+
class SubSystemTwo implements SystemInterface {
20+
public void methodTwo() {
21+
System.out.println("子系统方法二");
22+
}
23+
}
24+
25+
class SubSystemThree implements SystemInterface {
26+
public void methodThree() {
27+
System.out.println("子系统方法三");
28+
}
29+
}
30+
31+
class SubSystemFour implements SystemInterface {
32+
public void methodFour() {
33+
System.out.println("子系统方法四");
34+
}
35+
}

0 commit comments

Comments
 (0)