Z

门面模式(Facade Pattern)

Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem easier to use.

门面模式也是一个常用的设计模式,很可能我们在不知不觉中已经用到了。通常一个业务逻辑如果如果由若干个子业务逻辑组成,而对于调用该业务逻辑的地方来说并不关心其子业务逻辑,那么就可以将这若干个子业务逻辑封装在一起,这就是门面模式。

门面模式要求一个子系统的外部与其内部通信时必须通过一个统一的封装对象进行。通常我们写代码时如果一个逻辑包含若干个子逻辑,并且这个逻辑还可能会被别人调用是,那么一般都会将其封装为一个对象进行外部访问。典型的结构是这样:

这里逻辑很简单,所以也就不必写代码示例了。

门面模式为外界带来了一个黑箱,外部不关心里面的逻辑是怎样的,我只要调这个门面,就有我想要的效果。但它也有缺点,就是不符合开闭原则。开闭模式是什么?对扩展开放,对修改关闭。如果发现门面模式有问题,那么没法对其进行扩展,只能修改门面代码。甚至如果需要给门面模式增加参数,我们必须修改所有调用这个门面的代码。所以设计门面模式的时候一定要慎之又慎。