1、概念
外观模式(Facade)属于结构性模式,向客户端提供了一个可以访问系统的接口,隐藏了系统的复杂性。开发中外观模式的使用相对比较多,也容易理解。
2、优缺点:
优点:
1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。4更好的划分访问层次。
缺点:
不符合开闭原则,修改相对困难,继承重写都不合适。
3、使用场景:
- 为复杂的模块或子系统提供外界访问的模块
- 子系统相对独立
- 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。(摘自网络,很认同这个观点)
4、实例

public class System1 {
public void func1() {
System.out.println("系统1方法。。。");
}
}
public class System2 {
public void func2() {
System.out.println("系统2方法。。。");
}
}
public class System3 {
public void func3() {
System.out.println("系统:" + this.getClass());
}
}
public class Facade {
private System1 system1 = new System1();
private System2 system2 = new System2();
private System3 system3 = new System3();
public void method1() {
system1.func1();
}
public void method2() {
system2.func2();
}
public void method3() {
system3.func3();
}
}
public class FacadeDemo {
public static void main(String[] args) {
Facade facade = new Facade();
facade.method1();
facade.method2();
facade.method3();
}
}