單例模式即使沒有呼叫方法,物件也是可能被例項化的

2021-10-07 11:31:07 字數 937 閱讀 2160

一般的單例模式,都會把類的構造方法私有化以及構造出乙個靜態物件,然後提供乙個公有的獲取物件的方法,返回這個物件例項。

以下是最簡單的一種單例模式demo:

public

class

asingleton

private

static asingleton instance =

newasingleton()

;public

static asingleton getinstance()

public

static

void

main

(string[

] args)

}

執行main方法,結果如下:

不過也不是只呼叫getinstance()方法時,才會呼叫類的構造方法,當類中有字段被引用時,構造方法一樣會被呼叫

以下是帶有屬性的一種單例模式demo:

public

class

asingleton

private

static asingleton instance =

newasingleton()

;public

static asingleton getinstance()

public

static

void

main

(string[

] args)

}

執行main方法,結果如下:

總結

可以發現在單例模式中,當類中有字段被引用時,構造方法一樣會被呼叫。

物件導向 單例模式

設計模式 解決某一類問題行之有效的解決辦法 思想 單例 singleton 設計模式 學習設計模式必須先弄清楚它是解決什麼問題的。單例是解決什麼問題的呢?可以保證乙個類的物件唯一性。場景 比如多個程式都要使用乙個配置檔案中的資料,而且要實現資料共享和交換。必須要將多個資料封裝到乙個物件中。而且多個程...

c dll 單例模式出現多個單例物件

我這裡的問題主要是這樣的 有三個project,project1,project2,projecttest.project2 依賴於project1,並且在project2 中 存在project1 中乙個單例類的例項。project1 singletonclass project2 a class...

設計模式(物件效能模式)(單例模式)

執行緒非安全版本 singleton singleton getinstance return m instance 如果兩個執行緒都進入該函式,則此時判斷m instance的值都為nullptr,因此兩個執行緒都進入條件語句中new出來乙個單例模式的例項。讀操作是不需要加鎖的,但是這種方式會因為...