门面模式
2021-04-15 本文已影响0人
lj72808up
1. 门面模式
解决接口的复用性和易用性之间的冲突
- 复用性: 接口的业务粒度设计的足够小, 只完成一件事, 让不同的调用者都能调用. 但往往存在粒度过小, 调用者要调用一系列接口的情况, 导致易用性下降
- 易用性: 接口的业务粒度设计的足够大, 一个接口完成 n 件事, 调用者调用一个接口就能完成一系列动作, 但导致复用性降低
2. 门面模式的做法
假设有一个系统 A,提供了 a、b、c、d 四个接口。系统 B 完成某个业务功能,需要调用 A 系统的 a、b、d 接口。利用门面模式,我们提供一个包裹 a、b、d 接口调用的门面接口 x,给系统 B 直接使用。
3. 门面模式解决什么问题
(1) 解决易用性问题
迪米特法则(最小知识原则)
接口隔离原则
(2) 包裹接口解决性能问题
对于 web 应用, 同时调用多个接口会造成网络 IO 压力大, 响应速度慢. 如果只调用一个借口就能让页面获取足够的信息, 会加速页面响应
(3) 解决分布式事务问题
比如一个金融系统的账号注册, 要同时完成用户创建和用户的钱包创建, 这两个操作是在一个事务里的, 要同时成功或失败. 如果远端调用方分别调用者两个接口, 需要引入分布式事务的做法, 代码复杂度很高. 如果远端系统暴露出了同时创建用户和钱包的接口, 则可以避免引入分布式事务
4. 总结
- 门面模式通过设计冗余接口的方法, 解决接口粒度的易用性问题
- 适配器模式解决的都是方法调用时, 形参和实参类型不匹配的问题