门面模式-Facade

门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。最核心的目的:简化子系统,简化客户使用,屏蔽多个子系统。

此外门面类不参与子系统的业务逻辑,只是提供访问一个子类的途径而已,否则会产生倒依赖

缺点:不符合开闭原则。所谓的开闭原则是软件工程里面一个最基本的原则:对扩展开放,对修改关闭。换句话说,你的系统可以提供新的功能模块而不必进行修改。

用图表示就像下面这样:

 

使用场景:

这个模式还是比较好理解的,引入第三方中介类把各个分散的功能组合成一个整体,客户端只需要调用中介类的接口就可以实现目的,而不需要知道内部细节,和代理模式很相似,都引入了中介类(对象)中介对象都引用并把功能委托给了原对象都起到了"代理"功能

区别:代理侧重于对原对象的访问控制(当然也可以不是控制而是功能增强)

- 代理与原类实现相同的抽象(相同接口或直接继承原业)

- 代理只代理一个类

- 门面侧重于功能整合(多个小系统或小对象整合成一个功能丰富的大对象)

- 门面可以与子系统具有不同的抽象(具有不同的接口,可以对方法重新起名)

- 门面代理的是一系列类

部分参考:https://blog.csdn.net/yangspgao/java/article/details/80602794

原文地址:https://www.cnblogs.com/xiaxiaopi/p/12767579.html