0

インスタンスメソッドを静的メソッドでラップするシングルトンを実装することに問題はありますか?

例えば:

    public void DoStuff() { instance._DoStuff(); }
    private void _DoStuff() {

        ...
    }

もちろん、インスタンスは静的です。しかし、次のように呼び出す方がよいでしょう:

Singleton.DoStuff();

それ以外の:

Singleton.GetInstance().DoStuff();
4

1 に答える 1

0

依存していると思います。

最初に GetInstance() を使用してオブジェクトを取得し、それをコード内の別の場所で使用する必要があります。Singleton は、そのオブジェクトの単一のインスタンスが存在することを保証するのに役立ちます。

DoStuff を static にしたい場合は次に進みますが、コード内の他の場所でそのように呼び出す必要があることを知っておく必要があります。

だからあなたは本当にこの違いがあります:

var instance = Singleton.GetInstance();
...
instance.DoStuff ()

Singleton.DoStuff ()

これは、シングルトン オブジェクトを渡すことができ、静的呼び出しを知る必要がないことを意味します。

また、シングルトンを適切に使用しないと、単体テストで悪夢につながる可能性があることに言及する必要があります

于 2016-07-27T05:49:11.000 に答える