7

ファクトリメソッドがシンプルファクトリであり、ファクトリオブジェクトが抽象ファクトリであることを理解していますか? そして:ファクトリメソッドVSファクトリオブジェクト

-factory方法(シンプル工場):

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

+0

Javaの古代版を使用している場合を除き、可能な種類のピザを列挙するには、intの代わりにenumを使用してください。 – Renato

+0

+1、私は、この古代の例を見つけました(Javaはその時はまだ列挙しませんでした。) – drifter

答えて

6

いいえ。ファクトリメソッドは、状態を必要としないファクトリです。ファクトリクラスはクラスそのものであり、状態を持ち、その状態を変更するメソッドです。最後に.create()メソッドを呼び出し、現在の状態を使用して別のタイプの新しいオブジェクトを作成します。

抽象ファクトリは、同じ抽象概念の複数のファクトリ実装があります。 wikipedia exampleは約GUIFactoryです。これは抽象的なファクトリで、WinFactoryOSXFactoryの2つの実装があります。クライアントコードは、使用している実装が分からないため、ファクトリがButtonインスタンスを作成していることを知っているだけです。これは、OSに関係なく同じコードを書くことを可能にする。

+0

だから3つの主な種類があります:。 - 工場 - 抽象ファクトリー - ファクトリメソッド ? – drifter

+0

はい、そうです。工場と工場の方法はあまり違いはありません。 – Bozho

+0

あなたの答えははっきりしています。私は工場と工場の方法の違いは何かを理解していますが、どちらを使うのが良いですか?なぜ? – grep

関連する問題