乐趣区

设计模式9-门面模式

门面模式:如何设计正当的接口粒度以兼顾接口的易用性和通用性?


门面模式背景

为了保障接口的可复用性(或者叫通用性),咱们须要将接口尽量设计得细粒度一点,职责繁多一点。然而,如果接口的粒度过小,在接口的使用者开发一个业务性能时,就会导致须要调用 n 多细粒度的接口能力实现。 调用者必定会埋怨接口不好用。

相同,如果接口粒度设计得太大,一个接口返回 n 多数据,要做 n 多事件, 就会导致接口不够通用、可复用性不好 。接口不可复用,那针对不同的调用者的业务需要,咱们就须要开发不同的接口来满足,这就会导致系统的接口有限收缩。

那如何来解决接口的可复用性(通用性)和易用性之间的矛盾呢? — 门面模式

门面模式的原理与实现

门面模式,也叫外观模式,英文全称是 Facade Design Pattern
在 GoF 的《设计模式》一书中,门面模式是这样定义的:

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

翻译成中文就是: 门面模式为子系统提供一组对立的接口,定义一组高层接口让子系统更易用

假如,实现某个业务性能(比方显示某个页面信息)须要“顺次”调用 a、b、d 三个接口,因本身业务的特点,不反对并发调用这三个接口。
如果咱们当初发现 App 客户端的响应速度比较慢,排查之后发现,是因为过多的接口调用过多的网络通信。针对这种状况,咱们就能够利用门面模式,让后端服务器提供一个包裹 a、b、d 三个接口调用的接口 x。

App 客户端调用一次接口 x,来获取到所有想要的数据, 将网络通信的次数从 3 次缩小到 1 次,也就进步了 App 的响应速度。

退出移动版