設計模式之單例模式

2021-09-27 08:06:00 字數 1830 閱讀 6329

核心:

保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點
常用場景:
1. windows 系統 任務管理器、**站

2. **計數器

3. 配置檔案

4. 作業系統的檔案系統

5. spring 中的 bean 預設是單例

...

優點:
減少系統開銷
常見的五種單例模式主要

其它 問題

1. 餓漢式

/*

* 餓漢式實現單例模式

* * 1. 構造方法私有化

* 2. 類初始化時,立即載入(希望延時載入,即懶漢式)

*/public class singleton

public static singleton getinstance()

}

2. 懶漢式
/*

* 懶漢式 單例模式

* * 延遲載入,真正用的時候才載入

*/public class singletonlazy implements serializable

}// 每次呼叫都要同步

// 資源利用率高,併發效率低

public static synchronized singletonlazy getinstance()

// 反序列化時,如果定義了 readresolve 方法則直接返回此方法返回的物件,不需要單獨再建立物件

// private object readresolve() throws objectstreamexception

}

3. 雙重檢驗鎖
/*

* 雙重檢測鎖模式

*/public class singletonlock

public static singletonlock getinstance()

}singleton = sl;}}

}return singleton;

}}

4. 靜態內部類
/*

* 靜態內部類實現單例模式

* * 執行緒安全並且懶載入

*/public class singletoninner

private static class singletoninnerclass

public static singletoninner getinstance()

}

5. 列舉類
/*

* 列舉實現單例

*/public enum singletonenum

}

測試反射、反序列化

/**

* 測試反射、反序列化破解單例

* */

public class main

}

測試單例模式效率

/**

* 測試建立單例模式 效率

* */

public class test

count.countdown();

}}).start();

}long end = system.currenttimemillis();

count.await(); // main 執行緒阻塞,直到count=0

system.out.println("總耗時:" + (end - start));

}}

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...