第七章 在对象之间搬移特性
在对象设计过程中,“决定把责任放在那儿”即使不是最重要的事,也是最重要的之一。
常常我只需要使用Move Method 和Move Field简单的移动对象行为,就可以解决,优先使用Move Field
类往往因为承担过多责任而变得臃肿不堪。使用Exract Class 将部分责任分离出去。
7.1 Move Method 搬移函数
你的程序中,有个函数与其所驻类之外的另一个类进行更多交流,调用后者,或被后者调用。
在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或是将旧函数完全移除。
“搬移函数”是重构理论的支柱,如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,我就会搬移函数。这样,可以使系统中的类更简单。
7.2 Move Field 搬移字段
你的程序中,某个字段被其所驻类之外的另一个类更多用到。
在目标类新建一个字段,修改源字段的所有用户,令他们改用新字段。
7.3 Extract Class 提炼类
某个类做了应该由两个类做的事。
建立一个新类,将相关的字段和函数从旧类搬移到新类。
一个类应该是一个清楚的抽象,处理一些明确的责任。
7.4 Inline Class 将类内联化
某个类没有做太多事情
将这个类的所有特性搬移到另一个类中,然后移除原类。
如果一个类不再承担足够的责任,不再有单独存在的理由,将这个”萎缩类”塞进另一个类中