外观模式是一种很常用的设计模式,几乎随处可见,比如第三方库中封装的接口,这个接口可能是有很多种方案,但只提供了唯一接口供调用。再比如微信中的九宫格,提供统一的入口。
外观模式相对比较简单,只有三种角色:
- 子系统角色:实现系统的部分功能,客户可以通过外观角色访问它。
- 外观角色:为多个子系统对外提供一个共同的接口。
- 客户角色:通过一个外观角色访问各个子系统的功能。
其UML图如下:
示例代码:
public class FacadePattern {
public static void main(String[] args) {
Facade f = new Facade();
f.method(1);
}
}
//外观角色
class Facade {
private SubSystem01 obj1 = new SubSystem01();
private SubSystem02 obj2 = new SubSystem02();
private SubSystem03 obj3 = new SubSystem03();
public void method(int select) {
switch (select)
{
case 1:
obj1.method1();
break;
case 2:
obj2.method2();
break;
case 3:
obj3.method3();
break;
}
}
}
//子系统角色
class SubSystem01 {
public void method1() {
System.out.println("子系统01的method1()被调用!");
}
}
//子系统角色
class SubSystem02 {
public void method2() {
System.out.println("子系统02的method2()被调用!");
}
}
//子系统角色
class SubSystem03 {
public void method3() {
System.out.println("子系统03的method3()被调用!");
}
}