0

私は、他のプログラマーが使用することを意図したシングルトン クラスを頻繁にセットアップしますが、それらのクラスのメソッドへのアクセスをセットアップするための好ましい方法があるかどうかはわかりません。私がそれを行うと考えた2つの方法は次のとおりです。

public class MyClass {
    private static MyClass instance;

    public static void DoStuff( ) {
        instance.DoStuffInstance( );
    }

    private void DoStuffInstance( ) {
        // Stuff happens here...
    }
}

使用法は次のとおりです。MyClass.DoStuff( );

または次のようなもの:

public class MyClass {
    public static MyClass instance;

    public void DoStuff( ) {
        // Stuff happens here...
    }
}

使用法は次のとおりです。MyClass.instance.DoStuff( );

個人的には、最初のオプションを好む傾向があります。経験の浅いプログラマーにとって、あちこちにあることMyClass.instanceは見苦しく、覚えにくいと思います。

これらのいずれかを他のものよりも優先する正当な理由はありますか? 意見は結構です。他の人がどう思うか興味があります。

4

1 に答える 1

0

このように実装されたシングルトンを見たことがありません。典型的なセットアップは次のようになります。

public class MyClass {

    private static final MyClass instance = null;

    // Private to ensure that no other instances can be allocated.
    private MyClass() {}

    // Not thread safe!
    public static MyClass getInstance() {
        if( instance == null ) {
            instance = new MyClass();
        }
        return instance;
    }

    public void DoStuff( ) {
        // Stuff happens here...
    }
}

この方法では、すべての呼び出しが似てinstance.DoStuff();おり、最初のアプローチで使用する静的メソッドと実際の「インスタンス」メソッドを必要とするのではなく、「操作」ごとに 1 つのメソッドを定義するだけで済みます。

また、設定方法では、インスタンスが実際に初期化される前にこれらの静的メソッドを呼び出すことができるように見えますが、これは問題です。

于 2012-10-31T18:08:57.567 に答える