一,外观模式详解
-
概念
外观模式主要目的在于让外部减少与内部系统多个模块的交互,从而让外部能够更简单的使用子系统。它负责把客户端的请求转发给子系统内部的各个模块进行处理
-
使用场景
(1)为一个复杂的系统提供一个而简单的接口
(2)客户程序与抽象类的实现部分之间存在很大的依赖性
(3)当你需要构建一个层次结构的子系统
-
UML
- 代码示例
public class Facede {
private ModuleA moduleA;
private ModuleB moduleB;
private ModuleC moduleC;
private Facede() {
moduleA = new ModuleA();
moduleB = new ModuleB();
moduleC = new ModuleC();
}
public static Facede getInstance() {
return FacedeHolder.facede;
}
private static class FacedeHolder {
private static final Facede facede = new Facede();
}
public void testOperation() {
moduleA.testA();
moduleB.testB();
moduleC.testC();
}
}
Facede.getInstance().testOperation();
-
优点
(1)由于Facede类封装了各模块交互的过程,所以之后内部模块调用关系发生了变化,只需要修改Facade实现即可
(2)Facade实现可以被多个客户端调用
二,外观模式在android中的实际应用
-
Context
context中的contextImpl是android中的外观类