大話設計模式-Study-Tips-第十七章-單例模式(c++&c#)

一、UML圖

 

二、包含的角色

           Singleton類,定義一個GetInstance操作,允許客戶訪問它的唯一實例。  

三、特點

           因爲Singleton類封裝它的唯一實例,這樣它可以嚴格的控制客戶怎麼訪問它以及何時訪問它。簡單的說就是對唯一實例的受控訪問。

四、代碼實現

c# 餓漢式

public sealed class Singleton
{
    private Singleton() { }

    private static readonly Singleton instance = new Singleton();

    public static Singleton GetInstance()
    {
        return instance;
    }

    public void Operation() {
        // TODO implement here
    }
}

 front end

Singleton::GetInstance().Operation();

c++ 餓漢式

class Singleton
{
private:
  Singleton() {}
  static Singleton *instance;

public:
  static Singleton *GetInstance(); 
  void Operation();
};

Singleton *Singleton::instance = new Singleton();

Singleton *Singleton::GetInstance()
{
    return instance;
}

void Singleton::Operation()
{
    
}

front end 

Singleton::GetInstance()->Operation();

以上例子爲餓漢式單例最簡單的一種寫法,意在說明這類設計模式。其他實現不在這裏討論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章