外观模式:为客户端提供一套统一的接口,处理客户端请求,使客户端和具体的功能类分离开来,具体功能类的修改不影响客户端。定义了一个高层接口,使得子系统更容易使用。
动机:将一个系统划分成若干的子系统有利于降低系统的复杂性,一个常见的设计目标是使得各个子系统的通信和相互依赖关系达到最小,达到该目标的途径之一就是引入外观模式,利用外观模式为各个子系统提供一个统一一致的简单界面。
外观模式的通用UML
Facade类:外观类,与客户端直接联系,提供了内部功能的统一接口,屏蔽了内部各个子系统或者类的相互联系细节。
Class1~Class5:内部各个子系统或者是完成功能的相关的类,子系统或者类相互协作外层客户端的请求。
外观模式的效果:
1、对客户屏蔽了子系统组件,因而减少了客户端处理对象的数目,使得子系统使用起来更加方便。
2、实现了子系统和客户端之间的松耦合关系,而子系统的内部各个部件通常都是紧偶尔的。
3、如果客户端需要,它不限制客户端使用子系统类