4

以下のコードを実行すると、サンプルでプライベート コンストラクターを使用する理由が見つかりませんでした。

public sealed class Singleton
    {
        private static Singleton instance = null;
        private Singleton()
        {
        }

        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }

                return instance;
            }
        }
    } 

...

  //Why shouldnt I use something like below.
  public class Singleton
  {
       private static Singleton instance = null;            

       static Singleton()
       {
       }

       public static Singleton Instance
       {
            get
            {
                if (instance == null)
                {
                     instance = new Singleton();
                }

                return instance;
            }
        }
    } 

静的クラスを作成した場合、パブリック クラスの代わりに、インスタンスを作成するのではなく、クラスを直接使用できます。static キーワードが同じジョブに持続する場合、ここでプライベートコンストラクターを作成する必要は何ですか?

このパターンに従うことの他の利点はありますか?

4

7 に答える 7

0

理想的な OOP の世界では、 static classes を持たないようにする必要があります。それの訳は:

静的クラスのインスタンスを持つことはできません。これだけでも、ほとんどの OOP 原則と設計パターンに反します。デザイン パターンのリストを開き、それらを 1 つずつ調べて、自問してみてください。クラスのインスタンスがなくても、これを行うことができますか? 答えが「いいえ」の場合、静的クラスよりもシングルトン パターンを使用する方が有利です。


プライベート コンストラクターの使用については、Dmitry Bychenko の回答を参照してください

于 2016-03-15T08:08:18.627 に答える