第七章 在对象之间搬移特性

在对象的设计过程中,“决定把责任放在哪儿”即使不是最重要的事,也是最重要的事之一。我使用对象技术已经十多年了,但还是不能一开始就保证做对。这曾经让我很烦恼,但现在我知道,在这种情况下,可以运用重构,改变自己原先的设计。

常常我只需要使用Move Method和Move Field简单地移动对象行为,就可以解决这些问题。如果这两个重构手法都需要用到,我会首先使用Move Field,再使用Move Method。

类往往会因为承担过多责任而变得臃肿不堪。这种情况下,我会使用Extract Class将一部分责任分离出去。如果一个类变得太“不负责任”,我就会使用Inline Class将它融入另一个类。如果一个类使用了另一个类类,运用Hide Delegate将这种关系隐藏起来通常是有帮助的。有时候隐藏委托类会导致拥有者的接口经常变化,此时需要使用Remove Middle Man。

本章的最后两项重构——Introduce Foreign Method和Introduce Local Extension比较特殊。只有当我不能访问某个类的源码,却又想把其他责任移进这个不可修改的类时,我才会使用这两个重构手法。如果我想加入的只是一或两个函数,就会使用Introduce Foreign Method;如果不止一两个函数,就使用Introduce Local Extension。

results matching ""

    No results matching ""