設計模式之Singletion的學習筆記

2021-05-23 22:32:02 字數 1105 閱讀 5944

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...