什麼是單例模式?單例模式有哪些方式實現?寫個例子。

什麼是單例模式?

我所理解的單例模式:整個程序中只容許有惟一的一個對象(這個類只能實例化一次)設計模式

看看我找到的解釋:當一個類只能有一個對象時,每每會用到單例模式,例如,現實生活中有不少臨界資源,像 打印機、處理器(單核)、皇帝、太子等等,它們都是稀有資源,只能有一個實例對象。安全

單例模式有哪些方式實現?

第一種最簡單,但沒有考慮線程安全,在多線程時可能會出問題。(懶單例)多線程

public class Singleton
{
    private static Singleton _instance = null;

  //1.聲明一個私有方法(外部沒法調用)
    private Singleton(){}
    //2.聲明一個公共的靜態的建立上面私有方法(實現外部能夠調用到聲明的私有的單例方法)
    public static Singleton CreateInstance()
    {  //若是已經存在這個對象了就不要再建立新的,直接返回該對象

   //若是這個對象不存在就new一個新的唄
        if(_instance == null)

        {
            _instance = new Singleton();
        }
        return _instance;
    }
}

 

第二種考慮了線程安全spa

public class Singleton
{
    private volatile static Singleton _instance = null;
    private static readonly object lockHelper = new object();
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            lock(lockHelper)
            {
                if(_instance == null)
                     _instance = new Singleton();
            }
        }
        return _instance;
    }
}

 

class MyClass
    {
        private static MyClass my = new MyClass();
        private MyClass() { }

        public static MyClass GetMyClass()
        {
            return my;
        }
    }

 



第三種多是C#這樣的高級語言特有的線程

public class Singleton
{

    private Singleton(){}
    public static readonly Singleton instance = new Singleton();
}

 

  

寫個例子。

實現方式沒有仔細研究,先記個懶單例吧。抽空看看大話設計模式。。。設計

好吧,例子已經在上面了。。。code

相關文章
相關標籤/搜索