今天要说的重构来自于Martin Fowler’s 的重构目录,你可以在这里找到原始描述。
这个经常使用的重构的使用场景是在类中有一些方法你想把它们提取到父类中以便同一继承层次的其它类也可以访问这些方法。例如下面的代码中的两个方法我们想将它们提取出来以便让其它类使用。
1: public class Dog
2: {
3: public void EatFood()
4: {
5: // eat some food
6: }
7:
8: public void Groom()
9: {
10: // perform grooming
11: }
12: }
要想对上面的代码应用提取父类重构我们只需要将EatFood和Groom方法提取到一个新父类中,但是当父类已经存在时,提取父类重构和提升方法重构就很相似了。
1: public class Animal
2: {
3: public void EatFood()
4: {
5: // eat some food
6: }
7:
8: public void Groom()
9: {
10: // perform grooming
11: }
12: }
13:
14: public class Dog : Animal
15: {
16: }
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/17/refactoring-day-17-extract-superclass.aspx