当我觉得需要在我的项目中设立工厂课程时,我很想使用这种方法:
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;
}
}
在这两种情况下,无论何时添加新产品,交换机都需要在某处更改以包含新创建的产品。
我的问题是,如果我错过了我的方法,那么使用抽象工厂会有什么好处。
答案 0 :(得分:0)
在Factory模式中,您已经决定了集成的ProductFactory实现
在抽象工厂模式中,您可以决定在运行时集成的ProductFactory。相反,ProductFactory及其调用者在编译时没有耦合