今天看了设计模式中工厂方法的WebCast,本来是为了解决疑问的没想到疑问更深了.
我看到很多工厂方法的文章都是将工厂方法提取出来建立一个类
如:
如:
public abstract CarFactor
{
public abstract CreateCar();
}
public HongQiFactor
{
public override CreateCar()
{
return new HongQiCar();
}
}
但是我工厂方法这个精髓确实在"方法"这两个字中,而不是在"工厂"上,"工厂"只是他的作用,我认为你们这样的实现却是把"工厂"摆在了首位.
GOF的书中给书的结构图中Creator中就有一个AnOpeartion()方法

工厂模式的意图是这样写的:定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类
所以我认为工厂模式的实现应该是这样的:
public abstract class CarTestFrameWork
{
public abstract ICar CreateCar();
public void StartUp()
{
//...
}
public void run(){ //... }
}
假如我们要测试HongQI Car
我们就写一个HongQiCarTestFrameWork
public class HongQICarTestFrameWork:CarTestFrameWork
{
public override CreateCar()
{
return HongQiCar();
}
}
这样如果要测试HongQiCar就new一个HongQICarTestFrameWork要测试DongFengCar就new一个 DongFengCarTestFrameWork.