中间人
概述
中间人是耦合类代码异味的一种,指一个类几乎所有的方法都在做委派操作,只是将调用转发给另一个类,没有提供额外的价值或逻辑。
关键内容
- 特征识别:
- 类只是把调用转发给另一个类
- 一半以上的方法都是委派方法
- 没有提供额外的业务价值
-
类的功能几乎完全依赖于其他类
-
负面影响:
- 增加了不必要的间接层
- 提高了维护成本
- 使架构变得更加复杂和困惑
- 没有增加任何实质性功能
-
使得调用路径更长
-
常见情况:
- 代理类过度简单,没有额外逻辑
- 包装类只是简单的方法转发
-
门面模式被误用,只是纯粹的转发
-
重构策略:
- Remove Middle Man:移除中间人
-
Inline Method:内联方法直接调用目标
-
判断标准:
- 评估中间人是否提供了有价值的功能
- 如果只是简单的转发,考虑直接使用目标对象
- 遵循YAGNI原则,避免不必要的间接层
来源
- Martin Fowler — 《重构:改善既有代码的设计》
- 代码异味 — 重构指导书