1

本当に簡単な質問です。

class salad
class chef_salad extends salad
class ceasar_salad extends salad

変数がtypeあり、型に基づいて適切なオブジェクトを作成したいと考えています。

どうやら私はできる

if(type.equals("chef"){ salad s = new chef_salad(); }

オブジェクトを返す静的メソッドにすることもできると思いますがsalad、これは本当に最善のアプローチですか、それともコンストラクターを介して行うより良い方法ですか?

ps。架空の例

4

3 に答える 3

11

入力に基づいて、継承階層で特定のタイプのオブジェクトをインスタンス化する背後にあるロジックを非表示にするファクトリ パターンについて話している。

public class SaladFactory
{
    public Salad getSalad(type) {
        if ("chef".equals(type) {
            return new ChefSalad();
        }
        ...
    }
}
于 2012-09-16T13:46:49.760 に答える
3

私は次のようにします:

public static Salad createSaladInstance(String type)
{
    if(type.equals("Salad")) return new Salad();
    else if(type.equals("ChefSalad")) return new ChefSalad();
    // ...
}

// ...

Salad s = createSaladInstance(type);
于 2012-09-16T13:49:09.240 に答える
1

Factory Design パターンを参照してください。

public interface SaladFactory
   {
   public Salad createSalad();
   public String getName();
   }

for(SaladFactory factory:factories)
{
if(factory.getName().equals("caesar")) return facory.createSalad();
}
于 2012-09-16T13:48:10.633 に答える