c 設計模式 Singleton模式

2021-06-19 16:49:37 字數 1700 閱讀 4315

參考的文件

單例要求乙個類裡面只有乙個例項,並且提供了乙個全域性的訪問點。

單例類裡面定義了乙個getinstance的方法,是乙個靜態方法。用於建立自己的唯一例項。

在乙個系統裡面要求某個類只有乙個例項才能使用單例模式。

比如印表機 或者乙個通訊口進行傳輸。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace singleton

// methods

public static singleton getinstance()

}public class client}}

看程式1 靜態的成員變數。

2 私有或者受保護的建構函式,不允許通過new的方式建立例項。

3 通過開放getinstance方法來獲取例項。可以保證只初始化一次。

1. 針對多執行緒的情況,需要加入lock。

其中雙重鎖定比較合適,不用每次都lock影響效率。

如果instanch不為空,不續約進入鎖狀態。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace singleton

public static singleton getinstance()}}

return instance;}}

}

sealed關鍵字宣告此類不能被繼承。

2. 延遲初始化

public sealed class singleton

public static singleton getinstance()

class nested

internal static readonly singleton instance = new singleton();}}

乙個計數器的例子

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading;

namespace singletoncounter

static public countsingleton instance()

public void add()

public int getcounter()

}public class countmutilthread

public static void dosomework()

}public void stratmain()

}public class client}}

執行結果:

單例模式的應用範圍很廣,經常使用。

很多人可能在沒學到設計模式時候已經使用到了。

重溫C 設計模式 安全的Singleton模式

單體模式 singleton pattern 是為了保證乙個類只能例項化一次 並且提供乙個訪問它的全域性訪問點。一般有兩種方法來使用單體模式。1 使用乙個靜態變數。2 使用建構函式判斷。先是使用靜態變數方法,我們通過乙個實體 instance 來確定是否當前的類已經被例項化,如果沒有就新增乙個 si...

C 物件導向設計模式 1 Singleton模式

動機 motivation 在軟體系統中,經常有這樣一些特殊的類,必須保證它們在系統中只存在乙個例項,才能確保它們的邏輯正確性,以及良好的效率。如何繞過常規的構造器,提供一種機制來保證乙個類只有乙個例項?這應該是類設計者的責任,而不是使用者的責任。意圖 intent 保證乙個類僅有乙個例項,並提供該...

java設計模式 Singleton單例模式

餓漢模式 package singleton created by anshay on 2017年10月14日 email anshaym 163.com 型別 餓漢模式 public class singleton 2.建立類的唯一例項,使用private static修飾 private不允許外...