相关文章:
一、详解
1、概念 美 [fəˈsɑːd]
外观模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单得使用子系统。它负责把客户端的请求转发给子系统内部的各个模块进行处理。
2、使用场景
- a、当你要为一个复杂子系统提供一个简单接口时
- b、客户程序与抽象类的实现部分之间存在着很大的依赖性
- c、当你需要构建一个层次结构的子系统时
3、UML结构图分析
4、实际代码分析
public class ModuleA {
public void testFuncA() {
System.out.println("This is function from ModuleA");
}
}
public class ModuleB {
public void testFuncB() {
System.out.println("This is function from ModuleB");
}
}
public class ModuleC {
public void testFuncC() {
System.out.println("This is function from ModuleC");
}
}
public class Facade {
private ModuleA moduleA = null;
private ModuleB moduleB = null;
private ModuleC moduleC = null;
private Facade() {
moduleA = new ModuleA();
moduleB = new ModuleB();
moduleC = new ModuleC();
}
public static Facade getInstance() {
return SingletonHolder.mInstance;
}
private static class SingletonHolder {
private static final Facade mInstance = new Facade();
}
public void testOperation() {
moduleA.testFuncA();
moduleB.testFuncB();
moduleC.testFuncC();
}
}
public class Client {
public static void main(String[] args) {
Facade.getInstance().testOperation();
}
}
5、优点
- a、由于Facade类封装了各个模块交互的过程,如果今后内部模块调用关系发生了变化,只需要修改Facade实现就可以了
- b、Facade实现是可以被多个客户端调用的
二、在Android中的实际运用
contextImpl --> Android中的外观类