门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。
角色:
1.门面角色:客户端可以调用这个角色的方法。此角色知晓相关的一个或多个子系统的功能和责任。在正常情况下,本角色会将所有从客户端的请求委派到子系统去
2.子系统角色:可以同时有一个或多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。
类似于医院中设计一个接待员的话(超级无敌全知道)
什么情况下使用门面模式?
1.为一个复杂子系统提供一个简单接口
子系统往往因为不断演化而变得越来越复杂,使用门面模式 可以使得子系统更具可复用性。Facade模式可以提供一个简单的默认视图,对大多数用户来说,这个视图已经足够用了,而那些需要进一步继承的用户可以越过Facade层直接对子系统进行继承。
2.子系统的独立性
一般而言,子系统和其他的子系统之间,客户端与实现化层之间存在着很大的依赖性。引入Facade模式将一个子系统与它的客户端以及其他的子系统分离,可以提高子系统的独立性和可移植性。
3.层次化结构
在构建一个层次化的系统时,可以使用Facade模式定义系统中每一层的入口。如果层与层之间是相互依赖的,则可以限定它们仅通过Facade进行通信,从而简化了层与层之间的依赖有关系