Spiga

一天一个重构方法(28):下移方法

2009-08-23 19:02:42

Push Down Method:下移方法

与下移字段一样,如果父类中某个方法只与部分子类有关,将这个方法移到相关的那些子类去

public abstract class Animal
{
	public void Bark()
	{
		// code to bark
	}
}
public class Dog : Animal
{
}
public class Cat : Animal
{
}

这里的基类有一个Bark方法。或许我们的猫咪们一时半会也没法学会汪汪叫(bark),因此Cat 类中不再需要这个功能了。尽管基类不需要这个方法,但在显式处理Dog 类时也许还需要,因此我们将Bark 方法“下移”到Dog 类中。这时,有必要评估Animal基类中是否还有其他行为。如果没有,则是一个将Animal抽象类转换成接口的好时机。因为契约中不需要任何代码,可以认为是一个标记接口。

public abstract class Animal
{
}
public class Dog : Animal
{
	public void Bark()
	{
		// code to bark
	}
}
public class Cat : Animal
{
}