简单工厂不在23种设计模式之中,而是被归为工厂方法的一种形式,是参数化的
工厂方法。
public abstract class Creator
{
public abstract Production FactortMethod();
}
表示工厂方法模式的部分只是FactoryMethod(),如果没有这个方法,则不是工厂
方法模式。Creator的职责并非只是创建一个产品,它还经常包含模板方法。即
模式仅限于方法部分,这也就是为什么叫“工厂方法”的原因。它与抽象工厂和
构造器不同,后两者都是工厂类,在使用的时候需要将工厂类的实例作为参数传
递给被使用者,由被使用者做产品的实例化工作,当然这些模式中,可能用到工
厂方法模式。
工厂方法和工厂对象的不同,工厂对象的作用是专门负责其他类的实例化。例如
抽象工厂的对象或简单工厂的对象,实例化对象是工厂对象的唯一职责。
而工厂方法所存在的类则不同,只有工厂方法负责实例化相关类型的实例。除此
之外,Creator的对象还具有其他职责。
工厂方法一不小心就会变成模板方法模式。
联系:
抽象工厂---经常使用工厂方法创建各个部件。
模板方法---在定义模板方法的类中,经常定义工厂方法来创建相应的对象。
public abstract class AbstractClass
{
public string TemplateMethod()
{
string s="";
s=s+Title();
s=s+Body();
}
public abstract string Title();
public abstract string Body();
}