3

私の知る限り、Singleton Design Patternは、クラスのSINGLE OBJECTを1 つしか作成できないことを意味します。

次のコードは、エラーや例外なしで正常に実行されています。

SingletonExampleクラスにはプライベートなデフォルト コンストラクターがあるため、コードが失敗することが予想されます。

public class SingletonExample {
    private static SingletonExample singletonInstance;

    private SingletonExample() {
    }

    public static SingletonExample getSingletonInstance() {
        if (null == singletonInstance) {
            System.out.println("Creating new instance");
            singletonInstance = new SingletonExample();
        }
        return singletonInstance;
    }

    public void printSingleton(){
        System.out.println("Inside print Singleton");
    }

    public static void main(String a[])  {
        SingletonExample singObj1 = new SingletonExample();
        SingletonExample singObj2 = new SingletonExample();
    }
}

私のコードに何か問題がありますか?

4

4 に答える 4

23

mainメソッドは classにあるためSingletonExamplemainコードはプライベート コンストラクターにアクセスできます。

mainメソッドを別のクラスに移動してみてください。

于 2013-07-15T18:32:53.157 に答える
0

呼び出し元のシングルトン クラスのプライベート コンストラクターが同じクラスにあるため、コンストラクターにアクセスできますが、それ以外の場合はアクセスできません。設計パターンは、通常の人的エラーのみを回避するためのルールを定義します。

于 2013-07-16T01:53:48.657 に答える
0

シングルトン パターンの目的は、インスタンスの数を制御することであり、正しく実行されています。このクラスだけがインスタンスを作成できるので、インスタンスを 1 つだけ作成します。

于 2013-07-16T08:13:50.747 に答える