门面模式: 提供一个更高级别的接口,使细颗粒度的一组接口更加易用
场景:
-
如linux 中的shell命令,就是一种facade思想的体现,它封装了Linux内核的调用
-
解决网络性能问题: 加载一个页面如果有多个请求,我们可以通过聚合接口的方式,使用facade思想,让一个接口处理多个模块.提高网络性能,减少网络通信成本.
-
解决分布式事务问题: 例如 现有 A系统需要创建用户 ,B 系统需要创建钱包.这两个业务需要符合原子性. 我们可以借鉴门面模式的思想,再设计一个包裹这两个操作的新接口,让新接口在一个事务中执行两个 SQL 操作,使用spring或数据库的事务,即可处理
我们知道,类、模块、系统之间的“通信”,一般都是通过接口调用来完成的。接口设计的好坏,直接影响到类、模块、系统是否好用。所以,我们要多花点心思在接口设计上。我经常说,完成接口设计,就相当于完成了一半的开发任务。只要接口设计得好,那代码就差不到哪里去。接口粒度设计得太大,太小都不好。太大会导致接口不可复用,太小会导致接口不易用。在实际的开发中,接口的可复用性和易用性需要“微妙”的权衡。针对这个问题,我的一个基本的处理原则是,尽量保持接口的可复用性,但针对特殊情况,允许提供冗余的门面接口,来提供更易用的接口。
适配器是做接口转换,解决的是原接口和目标接口不匹配的问题。 门面模式做接口整合,解决的是多接口调用带来的问题。