1.概念
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2.理解:
外观模式主要解决系统内和系统外的通信问题,一般是系统外需要访问系统内的多个方法(接口),单项的居多,类似于系统内为系统外提供服务那样。增加的Facade类里面会包括所有被访问的类对象,然后统一提供一个接口供外面访问。
3.总结
外观模式是很简单的设计模式。但是需要和代理模式、中介模式区分。代理模式是为单个类型提供代理用的,封装了被代理类。中介模式是系统内部的类之间的通信问题,每个需要通信的类必须知道中介的存在。但是外观模式中,每个系统内部的类可不需知道Facade类的存在(因为经常是单向)。
3.1 中介者模式:A,B之间的对话通过C来传达。A,B可以互相不认识(减少了A和B对象间的耦合),一般是A和B中都有C,C中也有A和B,但是A和B互相不包含。
3.2 代理模式:A要送B礼物,A,B互相不认识,那么A可以找C来帮它实现送礼物的愿望(封装了A对象)。
3.3 外观模式:A和B都要实现送花,送巧克力的方法,那么我可以通过一个抽象类C实现送花送巧克力的方法(A和B都继承C)。(封装了A,B子类)
代理模式和外观者模式这两种模式主要不同就是代理模式针对的是单个对象,而外观模式针对的是所有子类。