-1
当我觉得有在我的项目一个工厂类的需要,我很想用这个办法:正确使用抽象工厂的
public class ProductFactory {
public Product makeProduct(Type t){
switch (t) {
case A: return new ProductA(); break;
case B: return new ProductB(); break;
default: throw new UnsupportedTypeException();
}
return null;
}
}
凡产品选择的逻辑封装工厂内目的。
对于抽象工厂模式,取而代之的是,从我所了解到的方法来看,也是抽象工厂,并根据产品选择逻辑对其进行实例化。
public class ProductFactoryFactory {
public ProductFactory getProductFactory(Type t){
switch (t) {
case A: return new ProductFactoryA(); break;
case B: return new ProductFactoryB(); break;
default: throw new UnsupportedTypeException();
}
return null;
}
}
在每次添加一个新的产品两种情况下,交换机需要以包括新创建的产品的地方改变。
我的问题是如果我用我的方法失去了一些东西,取而代之的是使用抽象工厂的优点。
这不会编译,你有一个'return'和'break'。你错过的是DI! – 2014-12-06 15:26:34
这个问题似乎是题外话题,因为它不是一个具体问题,而是关于设计模式的一般问题。因此它属于程序员SE。 – 2014-12-06 15:29:27
@BoristheSpider谢谢你,我纠正了代码。为了简单起见,我省略了依赖关系。你能否更好地解释依赖注入与如何相关? – DanTheMan 2014-12-06 15:41:05