設計模式 建立型模式 單例模式 Singleton

2021-07-25 04:58:52 字數 2610 閱讀 4674

4種單例模式

單執行緒單例

class single

private static single sin=null;

public static single createinstance()

return sin;}}

呼叫

console.writeline("********************單執行緒單例模式******************");

single sin = single.createinstance();

single sin1 = single.createinstance();

single sin2 = single.createinstance();

single sin3 = single.createinstance();

結果:建構函式只呼叫了一次

有乙個缺點,這種單利 如果加上多執行緒 會出現以下情況

多執行緒**:

console.writeline("********************多執行緒單例模式******************");

listtasklist = new list();

taskfactory taskfactory = new taskfactory();

for (int i = 0; i < 10; i++)

號執行一次", thread.currentthread.managedthreadid);

}));

}task.waitall(tasklist.toarray());

會出現以下情況,建構函式被執行1次以上

為了避免以上情況,通過鎖進行處理

類**

class singled

console.writeline("建構函式被執行一次",k.tostring());

}private static singled sin=null;

private static object _lock = new object();

public static singled createinstance()}}

return sin;}}

結果

應用靜態建構函式在程式執行第一次時會被執行且執行一次的原理 推出第三種單例

class single2

private static single2 sin=null;

static single2()

public static single2 createinstance()

}

呼叫

console.writeline("********************靜態建構函式單例模式******************");

single2 sin5 = single2.createinstance();

single2 sin6 = single2.createinstance();

single2 sin7 = single2.createinstance();

single2 sin8 = single2.createinstance();

結果

通過上面 可以推出第四種

class single3

private static single3 sin = new single3();

public static single3 createinstance()

}

呼叫

console.writeline("********************靜態欄位單例模式******************");

single3 sin9 = single3.createinstance();

single3 sin10 = single3.createinstance();

single3 sin11 = single3.createinstance();

single3 sin12 = single3.createinstance();

結果

設計模式 建立型模式 單例模式

類載入時建立物件 常量 class eagersingleton public static eagersingleton getinstance 延遲載入 假如在某一瞬間 執行緒a 和 執行緒b 都在呼叫getinstance 方法,此時instance物件為null值,均能通過instance ...

設計模式建立型模式 單例模式

單例模式 singletonparrten 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點 建立單例模式需要三方面操作 1.建立乙個物件 2.定義乙個私有構造方法 禁止外部類對其進行例項化 3.提供乙個對外訪問的方法 單例模式可以通過懶漢式和餓漢式來實現。懶漢式 執行緒不安全 懶漢式 單例模...

設計模式 建立型模式 單例模式

優點 缺點頻繁使用 建立與銷毀 資源占用較多,例項化消耗大且耗時長,通過共享單例,加快物件的訪問速度 類要求只生成乙個例項的場景 需要單一控制邏輯的操作。具體如 多執行緒執行緒池 網路連線池 訪問資料庫或者檔案的物件等等。結構主要角色 實現 懶漢式實現 實現特點 該模式的特點是類載入時沒有生成單例,...