概述

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

比如在维护一个遗留的大型系统时,这个系统已经非常难以维护和扩展了,但包含了非常重要的功能,新的需求开发必须依赖这些功能。这时,就可以为新系统开发一个Facade类,让新系统与Facade交互,Facade与遗留代码交互所有复杂的工作,开发人员分两个小组分别进行。

示例代码

class SubSystem1{
    public void method1(){
        System.out.println("SubSystem1 method1");
    }
}
class SubSystem2{
    public void method2(){
        System.out.println("SubSystem2 method2");
    }
}
class SubSystem3{
    public void method3(){
        System.out.println("SubSystem3 method3");
    }
}
class Facade{
    private SubSystem1 s1;
    private SubSystem2 s2;
    private SubSystem3 s3;
    public Facade(){
        s1 = new SubSystem1();
        s2 = new SubSystem2();
        s3 = new SubSystem3();
    }
    public void methodA(){
        s1.method1();
        s2.method2();
    }
    public void methodB(){
        s2.method2();
        s3.method3();
    }
}
//客户端
Facade f = new Facade();
f.methodA();
f.methodB();