PHP设计模式之门面模式

门面模式是设计模式非常容易理解的模式之一,应用场景也比较明确。

日常开发中,我们为了保证接口的可复用性,一般会将接口的粒度设计的很细、职责单一。但这也会造成一个问题,完成一个功能时,需要调用n多个接口才能完成。这样对调用者来说非常的不友好。但是,如果我们将接口粒度设计的过大,接口的复用性、通用性将会大打折扣。接口不可复用,那针对不同的调用者的业务需求,我们就需要开发不同的接口来满足,这就会导致系统的接口无限膨胀。

所以如何保证接口易用性、复用性同时兼顾呢?可以使用门面模式来完成该需求。

门面模式

定义:提供了一个统一的接口,用来访问子系统的一群接口。门面模式定义了一个高层接口,让子系统更容易使用。

假如我们现在正在开发微信小程序,为实现功能A,需要调用后端的4个接口。使用门面模式,提供一个新的接口f,这个接口f会包裹前端需要的4个接口。原本需要调用4个接口,现在有了门面模式,只需调用一个接口即可。这样可以减少网络请求,提高系统的响应速度。另外,我们知道调用接口会采用异步模式,接口的顺序无法得到保证,如果对多个接口的顺序有要求,那么可以使用门面模式来完成该需求。

应用场景

解决易用性问题

文章开篇说到的那个问题,就可以使用门面模式来解决。又比如,linux中的shell命令,提供给我们一些简单的命令,让我们方便的使用操作系统。

解决性能问题

上面已经提到了这个问题,可用一个接口包裹多个接口,减少网络请求。

模式特点

  • 提高系统的易用性
  • 门面模式并未将子系统隔离,子系统依旧可以正常使用
  • 门面模式提供了一个抽象层,将客户端和子系统解耦。