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