1

これがシングルトンクラスかどうか教えてもらえますか?

public class Final_output{

  Cafe_factory obj=null;

  private Final_output()
  {
    obj = new Cafe_factory();
    obj.getOrder("French Fries");
    obj.getOrder("Biryani");
    obj.getOrder("Ice-cream");
  }

  public static void main(String args[])
  {
    new Final_output();
  }
}

Cafe_factory同じパッケージ内の別のクラスです。

4

6 に答える 6

9

これはシングルトンではありません。

たとえば、シングルトンは次のとおりです。

public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
于 2012-09-04T12:45:58.527 に答える
2

いいえ、そうではありません。このクラスのインスタンスをその外部に作成することはできないためです(少なくとも1つのインスタンスが存在する必要があります)。一方、内部mainには必要な数のインスタンスを作成できます(したがって、シングルトンでもありません)。

シングルトンの例を次に示します。

public class MySingleton{
    private MySingleton(){}

    private static InstanceHolder{
        private static final MySingleton instance = new MySingleton();
    }

    public static MySingleton getInstance(){
        return InstanceHolder.instance;
    }
}
于 2012-09-04T12:46:44.283 に答える
2

そうではありません。

シングルトンは、作成できる同じクラスのインスタンスの数を1に制限し、このインスタンスを取得するための静的メソッドを提供することを目的としています。

これは通常、プライベートコンストラクターと静的メソッドを介して行われ、この一意のインスタンスを取得します。ここでは、この契約を尊重せず、シングルトンパターンを使用していませんFinal_outputCafe_factory

于 2012-09-04T12:48:14.297 に答える
1

Final_outputクラスの外部でもコード内にn個の新しいCafe_Factoryオブジェクトを作成できるため、シングルトンではありません。新しいキーワードでシングルトンが作成されることはありません。代わりに、静的メソッドを介してそのインスタンスをフェッチします。

于 2012-09-04T12:48:44.457 に答える
0

これ :

public class Final_output{

    private static Cafe_factory obj = null;

    private Final_output()
    {
       obj = getCafeInstance();
    }

    public static getCafeInstance(){
        if(null == obj){
             obj = new Cafe_factory();
             obj.getOrder("French Fries");
             obj.getOrder("Biryani");
             obj.getOrder("Ice-cream");
           }else{
               return obj;
           }
    }

    }
于 2012-09-04T13:02:57.250 に答える
-1

いいえこれはシングルトンではありません

public class Final_output{
   private static Final_output ourInstance = new Final_output();
   Cafe_factory obj=null;    

   private Final_output() {
     obj = new Cafe_factory();
     obj.getOrder("French Fries");
     obj.getOrder("Biryani");
     obj.getOrder("Ice-cream");
   }

   public Final_output getINstance(){
       return ourInstance;
   }

}
于 2012-09-04T12:49:09.150 に答える