外观模式(facade pattern)
外观模式(facade pattern):属于对象结构模式。又称为门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式UML图
外观模式涉及的角色
外观(Facade)角色:客户端直接调用这个角色的方法,该角色知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。子系统(SubSystem)角色:子系统角色集合实现子系统的功能,处理 Facade 对象指派的任务。注意子类中没有 Facade 的任何信息,即没有对 Facade 对象的引用。
示例代码
外观类 Facade
子系统(SubSystem)集合中的类A SubModuleA
子系统(SubSystem)集合中的类B SubModuleB
子系统(SubSystem)集合中的类C SubModuleC
客户端(Client)测试类 TestFacadePattern
外观模式优点
松散耦合:外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
简单易用:外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。
更好的划分访问层次:通过合理使用Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节