単品モードThe Singleton Pattern

2354 ワード

単品モード:クラスにインスタンスが1つしかないことを確認し、グローバル・アクセス・ポイントを提供します.(「Head First Design Patterns」より抜粋)
単品モードは比較的簡単で、以下に単品クラスを示します.
public class Singleton

    {

        #region = Instance =



        private static Singleton _instance;



        public static Singleton Instance

        {

            get {

                if (_instance == null)

                {

                    _instance = new Singleton();

                }

                return _instance; }

        }



        #endregion





        private Singleton() { }

    }

このクラスはインスタンス化できず、Instanceでしかアクセスできません.いつでもこのインスタンスにアクセスし、グローバル一意性を確保します.一意のインスタンスは明後日インスタンス化されるため、マルチスレッドでエラーが発生する可能性があります.単一のインスタンスで直接インスタンス化できます.
public class Singleton2

    {

        #region = Instance =



        private static Singleton2 _instance = new Singleton2();



        public static Singleton2 Instance

        {

            get { return _instance; }

        }



        #endregion





        private Singleton2() { }

    }

同期することもできます.
public class SingletonForThreads

    {

        private volatile static SingletonForThreads _instance;

        public static SingletonForThreads Instance

        {

            get {

                if (_instance == null)

                {

                    lock (SingletonForThreads._instance)

                    {

                        if (_instance == null)

                        {

                            _instance = new SingletonForThreads();

                        }

                    }

                }

                return _instance;

            }

        }



        private SingletonForThreads() { }

    }
は、参照のために簡単な3つの小さな例を与える.