我想学习创建型设计模式,现在我认为我已经理解了工厂方法模式。 但是当转向抽象工厂模式时,我无法找到它的用途。我知道我在这方面缺少些什么,但不知道具体是什么。
在抽象工厂模式中,我们将有一个抽象工厂,具体工厂将返回实例。假设我们正在处理汽车的创建。我们将拥有一个类似于以下代码的抽象工厂:
public interface CarFactory{
public Car getCar();
}
我们的混凝土工厂将会类似于:
public class AudiFactory{
public Car getCar(){
return new Audi();
}
}
public class VolvoFactory{
public Car getCar(){
return new Volvo();
}
}
在用户类中我们将像这样使用它:
CarFactory factory = new AudiFactory();
Car carAudi = factory.getCar();
factory = new VolvoFactory();
Car carVolvo = factory.getCar();
我认为我们也可以使用工厂模式构建相同的功能
public class CarFactory{
public Car getCar(String make){
if("Audi".equals(make))
return new Audi();
else if("Volvo".equals(make))
return new Volvo();
}
}
在用户类中,我们可以:
CarFactory factory = new CarFactory();
Car carAudi = factory.getCar("Audi");
Car carVolvo = factory.getCar("Volvo");
如果我的理解正确的话(如果我错了请纠正我),为什么我们需要另一种设计模式来解决这个问题?
CarFactory
并使用它来创建汽车,客户端类不关心这是什么类型的汽车,也不应该知道。如果您读过GoF书籍,请再读一遍;p客户端类不应自己创建工厂。 - Łukasz