美文网首页TDD(测试驱动开发)
重构坏味道:无用的中间人

重构坏味道:无用的中间人

作者: Ps天花乱坠 | 来源:发表于2018-01-23 16:34 被阅读0次

中间人

症状

一个小伙子(类)只是委托另外一个小伙子(delegate类)传话给她喜欢的姑娘(调用另外一个类)。这个委托类没有做其它额外的事情(那么这个小伙子为什么不直接去追那个姑娘呢,姑娘有可能最后让传话的这个小伙子得到了😂)。 Middle Man

病因

有时候是过度消除 Message Chain 导致的结果
有时候你可能会发现是一个类的行为逐渐转移到其它类,被转移之后这个类只是一个空壳,除了委托(delegate)之外什么都不做。

导致的健康问题

如果调用端想使用被委托类的新功能,因为它不知道“被委托类”,所以委托类必须添加简单的委托函数供调用端使用,如果这种函数很多,委托类就完全变成了一个中间人,这样的话无形中增加了开发成本。

治疗

  • 如果看到某个类接口有一半的函数都委托给其它类
    尝试运用 Remove Middle Man 让它直接和真正的负责的对象打交道
    IntelliJ IDEA 练习视频
  • 如果看到某些函数内容所表达的用途已经很清晰了
    尝试运用 Inline Method 让这些不干实事函数的内容直接放进调用端
    IntelliJ IDEA 练习视频
  • 如果中间人(Middle Man)还有其它行为
    尝试运用 Replace Delegation with Inheritance 把它变成委托类的子类,这样既可以扩展原对象行为,又不必担心那么多委托动作.
    IntelliJ IDEA 练习视频

康复

小伙可以见到传说的姑娘了😂


Middle Man After Refactoring

什么情况不治疗

  • 中间人是为了避免类之间的依赖。
  • 有些设计模式必须要引入中间人的例如代理模式(Proxy)装饰者模式(Decorator)

相关文章

网友评论

    本文标题:重构坏味道:无用的中间人

    本文链接:https://www.haomeiwen.com/subject/ouvsaxtx.html