1.UML类图
Facade外观类,知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。SubSystem Classes子系统类集合,实现子系统的功能,处理Facade对象指派的任务,注意子类中没有Facade的任何信息,即没有对象的引用。
2.示例代码
public class Facade {
private SubSystemOne subSystemOne;
private SubSystemTwo subSystemTwo;
private SubSystemThree subSystemThree;
private SubSystemFour subSystemFour;
public Facade() {
this.subSystemOne = new SubSystemOne();
this.subSystemTwo = new SubSystemTwo();
this.subSystemThree = new SubSystemThree();
this.subSystemFour = new SubSystemFour();
}
public void methodA() {
System.out.println("方法组A");
subSystemOne.methodOne();
subSystemTwo.methodTwo();
subSystemFour.methodFour();
}
public void methodB() {
System.out.println("方法组B");
subSystemTwo.methodTwo();
subSystemThree.methodThree();
}
}
public class SubSystemOne {
public void methodOne() {
System.out.println("子系统方法一");
}
}
public class SubSystemTwo {
public void methodTwo() {
System.out.println("子系统方法二");
}
}
public class SubSystemThree {
public void methodThree() {
System.out.println("子系统方法三");
}
}
public class SubSystemFour {
public void methodFour() {
System.out.println("子系统方法四");
}
}
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}
3.特点
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用于软件开发初期,有意识将软件分层,或是在系统变得越来越复杂时,可以使用Facade减少它们之间的依赖,再或是维护一个老项目时可以使新系统与Facade交互,Facade与老系统交互。