1、單執行緒下singletion物件實現
class singletion
//保證例項不被初始化,c#編譯器預設都會構造乙個無參的構造器。加private對它進行私有化出來後就可以避免讓編譯器預設構造。
public static singletion instance
return instance;}}
} 2、多執行緒下singletion物件實現,關鍵字volatile 很重要 告訴編譯器按照我寫的**順序進行編譯。因為c#編譯器
有可能對我寫的**的編譯順序進行微調。
class singletion
public static singletion instance}}
return instance;}}
} 3、靜態的singletion 只是對於無引數的構造器使用。如果帶有引數可以採用屬性+方法進行分離。
如:class singletion}
注意:這三種方式建立singletion時 都必須改寫 singletion 預設構造器(private static(){})因為:c#
編譯器在編譯時會給類預設新增無參構造器。所以我們要改寫。(private即外部訪問不到)
singletion 模式學習的擴充套件思考:
1、如何將乙個例項擴充套件到n各例項?即只能建立n個例項。
2、c#如何實現物件池?
3、多個類協同工作環境中如何運用singletion?
4、如何控制使用者new對乙個類的例項構造器的任意呼叫?
.net 框架中singletion應用
type型別其實內部實現了singletion模式的運用
myclass t1=new myclass();
myclass t2=new myclass();
type type1=t1.gettype();
type type2=t2.gettype();
保證type1,type2唯一。只要type1,type2的實際物件一樣,他的引用物件也
就一樣。
即type1==type2;
另乙個就是net中的httpcontext.current 在區域性領域也是乙個singletion
模式的實現。
設計模式 singletion
什麼是單例模式 單例模式是乙個類只有乙個例項,並為整個系統提供乙個全域性的訪問點。全域性中該類只有乙個例項 為什麼使用單例模式 為了避免不一致的狀態。單例模式的幾種實現 方法呼叫前,例項就已經建立好 public classsingletion01 public staticsingletion01...
設計模式之禪之設計模式 門面模式
1 package com.yeepay.sxf.template18 2 3 寫信的業務類 4 隱藏在門面角色裡邊,不需要暴露太多5 author sxf6 7 8public inte ce iletterprocess view code 寫信的業務類的實現 1 package com.yee...
設計模式之禪之設計模式 橋梁模式
1 package com.yeepay.sxf.template24 2 3 實現化角色 4 相當於不同的業務邏輯,抽象出共有行為5 6 產品類7 author sxf8 9 10 public abstract class product view code 房子產品實現 1 package c...