Пример шаблона Singleton — шаблон проектирования Magic Code

искусственный интеллект

1. ///

/// Ленивый одноэлементный режим при многопоточности, без блокировки, будет проблема многопоточности создавать объекты одновременно, что нарушает принцип одноэлементного режима.

    /// </summary>

    public class Singleton

    {

        private static Singleton instance;

        private static object _lock = new object();

        private Singleton()

        {

        }

        public static Singleton GetInstance()

        {

            if (instance == null)

            {

                lock (_lock)

                {

                    if (instance == null)

                    {

                        instance = new Singleton();

                    }

                }

            }

            return instance;

        }

}

2. Режим голодного человека. Поскольку объект создается в начале, нет проблемы многопоточных вызовов для одновременного создания объекта.

public class Singleton

    {

        private static Singleton instance=new Singleton();

        private Singleton() { }

        public static Singleton GetInstance()

        {

            if (instance == null)

            {

                instance = new Singleton();

            }

            return instance;

        }

    }