单例模式其实我们并不陌生,在学习语言编程时就已接触过,以下是常用的实例,简单代码可以复用。
1、懒汉式
public class HoonSynSingleton {
private static HoonSynSingleton instance=null;
private HoonSynSingleton(){
}
public synchronized static HoonSynSingleton getInstance(){
if(null==instance)
instance=new HoonSynSingleton();
return instance;
}
}
2、饿汉式
public class HungerySingleton {
private static HungerySingleton instance=new HungerySingleton();
private HungerySingleton(){
}
//返回实例对象
public static HungerySingleton getInstance(){
return instance;
}
}
3、使用枚举方式
package com.cai.test; /** * 枚举 */ public class SignalEnum { SignalEnum() { }; //延迟加载 private enum EnumHolder{ INSTANCE; private SignalEnum instance=null; EnumHolder(){ instance=new SignalEnum(); } private SignalEnum getInstance(){ return instance; } }//懒加载 public static SignalEnum getInstance(){ return EnumHolder.INSTANCE.instance; } }
4、DCL方式单例
public class DCL {
private volatile static DCL instance=null;
private DCL(){
}
public static DCL getInstance(){
if(null==instance)
synchronized (DCL.class){
if(null==instance)
if(null==instance)
instance=new DCL();
}
return instance;
}
}
以上是我们常用的单例模式,欢迎大家交流。