Spiga

一天一个重构方法(21):将构造函数替换为工厂函数

2009-08-03 20:27:24

你希望在创建对象时不仅仅是对它做简单的建构动作,将构造函数替换为工厂函数。

public Employee(int type)
{
	_type = type;
}

上面构造函数重构成工厂函数后代码如下

public static Employee Create(int type)
{
	return new Employee(type);
}

private Employee(int type)
{
	_type = type;
}

你可能常常需要根据type code创建相应的对象。现在,创建名单中还得加上subclasses,那么subclasses也是根据type code来创建。然后由于构造函数只能返回被索求的对象,因此你需要将构造函数替换为工厂函数。