工厂方法VS工厂对象

工厂方法VS工厂对象

问题描述:

据我了解,工厂方法是简单工厂和工厂对象是抽象工厂? 人和:工厂方法VS工厂对象

- 工厂方法(简单工厂):

public class SimplePizzaFactory { 
    public static final int CHEESE = 1; 
    public static final int PEPPERONI = 2; 
    public static final int VEGGIE = 3; 

    public static Pizza createPizza(int type) { 
     Pizza pizza = null; 

     if (type == CHEESE) { 
      pizza = new CheesePizza(); 
     } else if (type == PEPPERONI) { 
      pizza = new PepperoniPizza(); 
     } else if (type == VEGGIE) { 
      pizza = new VeggiePizza(); 
     } 

     return pizza; 
    } 
} 

工厂对象(抽象工厂):

我对不对?

工厂模式有多少实现,它们有什么不同?

+0

你是对的,谢谢 – drifter 2012-02-02 19:06:48

+0

另一件事,除非你使用一些古老的Java版本,请使用枚举而不是整数来枚举可能的比萨类型。 – Renato 2012-02-02 19:14:07

+0

+1,我发现这个古老的例子(Java的那个时候还没有枚举呢。) – drifter 2012-02-02 19:16:56

否。工厂方法是不需要任何状态的工厂。工厂类本身就是一个类 - 它具有状态和改变该状态的方法。最后你调用.create()方法,它使用它的当前状态来创建一个不同类型的新对象。

抽象工厂是不同的东西 - 在那里你有多个相同抽象概念的工厂实现。 wikipedia example约为e GUIFactory - 这是一个抽象工厂,它有两个实现:WinFactoryOSXFactory。客户端代码不知道它正在使用哪个实现 - 它只知道工厂创建了Button实例。无论操作系统如何,都可以编写相同的代码。

+0

因此,有3种主要类型: - 工厂 - 抽象工厂 - 工厂方法 ? – drifter 2012-02-02 19:02:18

+0

是的,这是正确的。工厂和工厂的方法虽然没有太大的差异。 – Bozho 2012-02-02 19:02:53

+0

你的回答很明确。我了解工厂和工厂方法之间有什么区别,但哪个更好用?为什么? – grep 2015-06-19 10:06:29