1. 概念
外观模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单得使用子系统。它负责把客户端的请求转发给子系统内部的各个模块进行处理。主要是组合已有功能以实现客户端请求,而不会添加新的需求。
image.png
2. 使用场景
当要为一个复杂子系统提供一个简单接口时。
客户程序与抽象类的实现部分之间存在着很大的依赖性。
当需要构建一个层次结构的子系统时。
3. 实例
public class Module1 {
public void testFunctionA() {
System.out.println("testFunctionA from Module1");
}
}
public class Module2 {
public void testFunctionB() {
System.out.println("testFunctionB from Module2");
}
}
public class Module3 {
public void testFunctionC() {
System.out.println("testFunctionC from Module3");
}
}
public class Facade {
private Module1 module1 = null;
private Module2 module2 = null;
private Module3 module3 = null;
private static Facade facade = null;
private Facade() {
module1 = new Module1();
module2 = new Module2();
module3 = new Module3();
}
public static Facade getFacade() {
if (facade == null) {
facade = new Facade();
}
return facade;
}
public void testOperation() {
module1.testFunctionA();
module2.testFunctionB();
module3.testFunctionC();
}
}
public class Client {
public static void main(String[] args) {
Facade.getFacade().testOperation();
}
}
4. 特点
由于Facade类封装了各个模块交互的过程,如果今后内部模块调用关系发生了变化,只需要修改Facade实现就可以了。
Facade实现是可以被多个客户端调用的。
5. 在android的运用
contextimpl
网友评论