门面模式
来自智得网
简介
门面模式(Facade)是常用的设计模式之一,内部功能统一封装在门面层,可以收敛外部系统的访问入口,屏蔽异构的内部系统,从而提升系统的安全性,易用性等。
原理
门面模式将系统分为两种角色:
Facade(门面系统),客户端调用其他系统功能的入口,它将代理所有客户端的请求,并且委托给相应的子系统处理;
SubSystem(子系统),子系统可能是一个类或者一组类,也可能是几个或者多个的组件/系统,子系统不被客户端直接调用,而通过Facade系统被客户端使用。
门店模式的特点如下:
因为门面模式屏蔽了外部系统和内部子系统的交互,子系统可以有选择性的暴露方法。
模块/子系统中定义的方法可以分成两部分,一部分是给外部系统(Facade)使用的,一部分是子系统内部模块之间相互调用时使用的。Facade可以避免内部方法的暴露。
门面模式可以有很多个门面类
在门面模式中,对门面类的数量没有限制。如果有多个子系统提供多个模块的功能,可以将这些功能进行分类,对每一类的功能提供单独的门面类。
门面模式隔离了子系统和外部系统,所以可以实现安全机制
门面模式可以实现安全机制,避免外部系统和子系统的交互,从而可以保护子系统内部的数据以及方法。
门面模式实现了系统之间的松耦合
客户端与子系统解耦,可以提高子系统的独立性,客户端也不需要知道子系统的内部构造。
门面模式和代理模式都引入了中介,而且中介都起到代理功能。但是代理模式只代理一个类,而且代理类与实现类都有同样的抽象,对外提供统一的接口。门面类代理的是一系列子系统的功能,和子系统可以提供不同的对外接口。