1. 程式人生 > >【軟考學習】設計模式——單例模式

【軟考學習】設計模式——單例模式

【背景】
設計模式是非常重要的一塊知識,每個設計模式都值得深入瞭解和學習。
【內容】
單例設計模式總結:
    一、定義:保證一個類僅有一個例項,並提供一個訪問它的全域性觀點。

    二、UML結構圖:


    三、程式碼實現:  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 單例模式_基本程式碼
{
    class Program
    {
        static void Main(string[] args)
        {
            Singleton s1 = Singleton.GetInstance();
            Singleton s2 = Singleton.GetInstance();

            if (s1==s2)
            {
                Console.WriteLine("兩個物件是相同的例項");
            }

            Console.Read();
        }

        class Singleton
        {
            private static Singleton instance;
            private static readonly object syncRoot = new object();
            private Singleton()
            {
            }

            public static Singleton GetInstance()
            {
                //雙重鎖定
                if (instance ==null)
                {
                    //多執行緒時的單例
                    lock (syncRoot)
                    {
                        if (instance == null)
                        {
                            instance = new Singleton();
                        }                        
                    }
                }
                return instance;

                ////單執行緒的單例模式
                //if (instance==null )
                //{
                //    instance = new Singleton();
                //}
                //return instance;
            }
        }
    }
}