Spiga

一天一个重构方法(32):提炼父类

2009-09-11 15:55:52

Extract Superclass:提炼父类

两个类做类似的事情。可以为这个两个类建立一个父类,将相同特性移至到父类

public class Dog
{
	public void EatFood()
	{
		// eat some food
	}
	public void Groom()
	{
		// perform grooming
	}
}

重构之后,我们仅仅将需要的方法转移到了一个新的基类中。这很类似“Pull Up”重构,只是在重构之前,并不存在基类。

public class Animal
{
	public void EatFood()
	{
		// eat some food
	}
	public void Groom()
	{
		// perform grooming
	}
}
public class Dog : Animal
{
}

在建立这些具有共通性的类之前,你往往无法发现这样的共通性,因此你经常会在具体共通性的类存在后,再开始建立其间的继承结构。