C 版的6種單件實現

2021-04-13 01:37:15 字數 1714 閱讀 9643

c#版的6種單件實現:

1 簡單實現:

1public class singleton

2 5     public static singleton instance

6  

13         return instance;

14      }

15   }

16}

17缺點:由於初始化例項只執行一次,因此,if語句總是要進行判斷,這種實現並不太好。

2 靜態初始化

using system;

public sealed class singleton

public static singleton instance }

} 優點:沒有1中實現的if語句問題。

缺點:1,無法延遲實現  2 ,無法繼承,也就是無法實現需要n(n>1)個例項的需求。

3 延遲實現

public sealed class singleton

public static singleton getinstance()

class singletoncreator

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

4 多執行緒

using system;

public sealed class singleton

public static singleton instance }

return instance;

} }

}5 泛型實現

using system;

public sealed class singleton

public static singleton instance }

return instance;

} }

}6 monostate 實現單一行為

singleton強制結構上的單一性,防止建立出多個例項物件。

montstate強制行為上的單一性,強制不同物件中的同乙個屬性在同一時間必須有相同的值。

monostate模式的好處

•透明性:表面上看沒有特別的地方。不需要特殊的實現。

•可派生:派生類和基類共享相同的靜態變數。

public class monostate

public int x

set }}

7 static 關鍵字與同一程序下的執行緒無關

測試**:

using system;

using system.collections.generic;

using system.text;

namespace teststaticinmultithread

}class test

public void a()

- a :", x,s);

b();

}private void b()

-b : ", x,s);

c();

}private void c()

- c : ", x,s);

d();

}private void d()

- d : ", x,s);}}

}測試結果是,靜態變數x的值是由1-8,如果加上那個注釋語句是1-16。這說明,執行緒對同乙個物件x進行了操作。

單鏈表實現 c版

寫前 這是乙個做為練習記錄 別無它用。不足之處還請指正!這次練習線性鍊錶環境為ubuntu10.10 vim gcc,分三個檔案,乙個是nodetype.h,node.h,listnode.c。原始碼如下 nodetype.h原始碼 ifndef nodetype h define nodetype...

c 中實現單件示例

有些窗體我們不希望生成多個例項,例如windows系統中的控制面板等,這些窗體只有乙個例項,可以採用我們現在要說的單件來實現。現在用乙個單位的窗體呼叫來說明單件,從form1中呼叫form2,如下 form1窗體 using system using system.collections.gener...

C 中如何實現單件模式

前幾天c 老師提到在給我們講解知識的時候用到了單件模式的概念!今天寫出來和大家分享分享!言歸正傳!題目是這樣的 建立乙個類,是這個類在其作用域內只能有乙個例項!剛開始老師沒講的時候我也實現了這個功能,我的方法是在類中宣告乙個靜態資料成員 整型 在類的建構函式裡做點手腳!我是在建構函式裡檢測一下靜態資...