《重构 改善既有代码的设计》 读书笔记(十四)

3.16 中间人(Middle Man)

委托:一个方法直接写功能逻辑,这是亲历亲行;一个方法调用了别的类中的方法,这就是委托。(委托别的类的方法来达到不可告人的目的)

在面向对象中,一个惯用的伎俩就是委托,这是随着封装一同产生的。

封装:对外部世界隐藏其内部细节。

委托是个好东西,但不能滥用:某个类有一半的函数都委托给了其他类,这就是过度运用。(此时此地,其实充斥着依恋情结(3.7节)的味道)

在过度运用委托时,就意味着产生了过多的中间人,这时就该使用移除中间人(7.6 Remove Middle Man)。

移除中间人(7.6 Remove Middle Man):移除中间人和隐藏委托关系是截然相反的两种重构方法,很难说移除中间人和隐藏委托关系(7.5 Hide Delegate)之间的平衡点在哪里,只能随着需求不断调整。

重构的意义:你永远不必说对不起——只要把出问题的地方修补好就行了。

如果某些中间商只是起到倒手作用,就可以运用内联函数(6.2 Inline Method)把它们放进调用端。

内联函数(6.2 Inline Method):如果一个方法小到不能再小,以至于方法内部代码与方法名一样明了,此时,这个方法也许就是多余的了,就该在调用它的地方直接写方法内容即可,然后删掉这个可有可无的方法。

如果这些中间商除了倒手,还进行了处理,那么可以考虑以继承取代委托(11.12 Replace Delegation with Inheritance),把它变成实责对象的子类,这样你既可以扩展原对象的行为,又不必负担那么多的委托动作。

以继承取代委托(11.12 Replace Delegation with Inheritance)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NewReErWen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值