门面模式:建立一个统一的对象对来提供子系统外部和内部的通讯方式,子系统外部只能通过此对象对子系统内部进行访问
优点:细节隐藏,高层调用不用关心底层实现,避免产生高度的耦合关系
标准类图:
子系统中的类:
public class Class1 {
public void foo4(){
System.out.println("foo4");
}
public void foo5(){
System.out.println("foo5");
}
public void foo6(){
System.out.println("foo6");
}
}
public class Class2 {
public void foo1(){
System.out.println("foo1");
}
public void foo2(){
System.out.println("foo2");
}
public void foo3(){
System.out.println("foo3");
}
}
抽象外观:
public interface Facade {
void facadeMethod1();
void facadeMethod2();
}
具体外观:
public class ConcreteFacade implements Facade{
private Class1 class1 = new Class1();
private Class2 class2 = new Class2();
public ConcreteFacade(Class1 class1, Class2 class2) {
super();
this.class1 = class1;
this.class2 = class2;
}
@Override
public void facadeMethod1() {
class1.foo4();
class2.foo1();
class1.foo5();
}
@Override
public void facadeMethod2() {
class2.foo2();
class2.foo3();
class1.foo6();
}
}