我看到许多人使用类似的东西,并称之为工厂模式。
class Factory {
public IProduct Create (ProductEnum type) {
switch (type) {
case ProductAType:
return new ProductA();
case ProductBType:
return new ProductB();
}
}
}但是,真正的工厂模式不是每个产品类型都有一个工厂吗?因此,当您创建IProduct的新实现时,您必须创建一个新的工厂类并重新定义create方法。就像在这张照片里:

第一个例子也是工厂模式,还是其他的模式,应该使用还是不使用?
发布于 2015-11-05 01:26:23
但是,真正的工厂模式不是每个产品类型都有一个工厂吗?
如果您所说的“真实工厂模式”指的是GoF Factory方法模式,那么是的: GoF模式声明,“子类决定要实例化哪个类”。
是第一个例子,也是工厂模式,或者是别的什么,
第一个示例不是GoF模式,而是常用的、通常称为工厂的模式。您可能还会看到它称为简单工厂( Simple ),或者如果方法是静态的,则称为静态工厂( static ),以区别于GoF。当不区分GoF模式和相关(但非官方的)编码成语时,混乱就很猖獗。
这是否应该被使用呢?
在GoF模式中看不到这样的成语是因为它违反了开放/封闭原则。每次添加新产品时,都必须修改同一个工厂类,而不是通过每个GoF的继承和多态性来添加产品。您必须自己判断违反开放/封闭原则的简单性是否大于潜在的可维护性。
发布于 2015-11-04 22:55:06
实际上有两种工厂模式。第一个称为工厂方法,第二个显示在图片中的是抽象工厂。谈论工厂模式的人通常不知道其中的一种,或者不理解其中的区别。这将是浪费时间来描述这里的差异,所以我将向您指出这,所以问题开始。很明显互联网上还有更多。
代码片段中包含的是工厂方法。
https://stackoverflow.com/questions/33533517
复制相似问题