外观模式的本质是:封装交互,简化调用
何时选用外观模式?
1.如果你希望为一个复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。使用外观对象来实现大部分客户需要的功能,从而简化客户的使用
2.如果想要让客户程序和抽象类的实现部分松散耦合,可以考虑使用外观模式,使用外观对象来将这个子系统与它的客户分离开来,从而提高子系统的独立性和可移植性。
3.如果构建多层结构的系统,可以考虑使用外观模式,使用外观对象作为每层的入口,这样可以简化层间调用,也可以松散层次之间的依赖关系。
外观模式的目的不是给子系统添加新的功能接口,而是为了让外部减少子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统。
优点:
松散耦合
简单易用
更好的划分访问层次
缺点:
过多的或者不合理的Facade也容易让人迷惑。到底是调用Facade好呢,还是直接调用模块好。