設計模式簡單入門---單例模式
阿新 • • 發佈:2018-08-24
new tint highlight ava jdb on() ble 簡單 變慢
1 定義
Ensure a class only has one instance,and provide a global point of access to it. (保證一個類僅有一個實例,並提供一個訪問它的全局訪問點)
2 用處
當前系統的某一個對象只需要一個實例的時候使用,比如:JDBC的連接在很多時候只需要一個實例。
3 優點
有利於控制實例的個數,從而節省了內存,有利於java的垃圾回收。
4 實現
懶漢模式(不能在多線程中使用)
public class SimpleSingleton { private static SimpleSingleton instance; private SimpleSingleton(){} public static SimpleSingleton getIntance(){ if(instance == null) instance = new SimpleSingleton(); return instance; } }
懶漢模式(可以在多線程下使用,但效率低)
public class SingletonSync { private static SingletonSync instance; private SingletonSync(){} public static synchronized SingletonSync getInstance(){ if (instance == null) { instance = new SingletonSync(); } return instance; } }
餓漢模式(會在初始化的時候進行實例化,初始化速度變慢)
public class SingletonHungry { private static SingletonHungry instance = new SingletonHungry(); private SingletonHungry(){} public static SingletonHungry getInstance(){ return instance; } }
枚舉(不僅能避免多線程同步問題,而且還能防止反序列化重新創建新的對象,沒有實際使用過,簡單粗暴~)
publicenum SingletonEnum { instance; }
雙重校驗鎖
public class SingletonDouble { private volatile static SingletonDouble singletonDouble; private SingletonDouble(){} public static SingletonDoublegetSingletonDemo7(){ if (singletonDouble== null) { synchronized (SingletonDouble .class) { if (singletonDouble== null) { singletonDouble= new SingletonDouble (); } } } return SingletonDouble ; } }
設計模式簡單入門---單例模式