首页/开发/代码质量与评审速查/手法:Hide Delegate(隐藏委托关系)
重构手法62 条

手法:Hide Delegate(隐藏委托关系)

让服务方替你转发对下游对象的调用:调用方不再了解对象图内部,委托链变化被隔离在服务方;与 Remove Middle Man 是一对相反方向的权衡。

场景客户端频繁 a.getB().getC()
做法在 A 上加转发方法,调用方改用新方法
权衡转发方法过多 → 反过来考虑 Remove Middle Man

Java 示例

Java 示例
// 之前
manager.department().leaderName()

// 之后
manager.leaderName()  // Department 细节被隐藏

易错点

  • 机械隐藏所有链条:中间人膨胀,类变厚
  • 转发忘记处理异常语义:下游错误被吞或换型

数据来源与参考

  • 《重构》第 2 版 · 第 7 章(Hide Delegate)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌