动机
如果各子类时分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容易重复。这样的字段有时拥有近似的名字,但也并非绝对如此。判断若干字段是否重复,唯一的办法就是观察函数如何使用它们。如果它们被使用的方式很相似,你就可以将它们归纳到超类去。
本项重构从两方面减少重复:首先它去除了重复的数据声明:其次它使你可以将使用该字段的行为从子类移至超类,从而去除重复的行为。
做法
- 针对待提升之字段,检查它们的所有被调用点,确认它们以同样的方式被使用。
- 如果这些字段的名称不同,先将它们改名,使每一个名称都和你想为超类字段取的名称相同。
- 编译,测试。
- 在超类中新建一个字段(如果这些字段是private,你必须将超类的字段声明为protected,这样子类才能引用它)。
- 移除子类中的字段。
- 编译,测试。
- 考虑对超类的新建字段使用Self Encapsulate Field。
范例
重构后