一、引言
单例模式是设计模式中最常用的一种,也是工作面试中会被经常问到的一种,因此,这篇文章将主要讲述如何实现单例模式,以及单例模式的一些优缺点。
二、单例模式的定义
单例模式就是为了保证一个类在运行中只能有一个实例的一种设计模式。
三、单例模式的实现方式
1.实例变量实现(俗称懒汉式)
public class Singlton{
private Singlton instance;
private Singlton(){
}
public static Singlton getInstance(){
if(instance==null){
instance = new Singlton();
}
}
public void sFunc(){
//do something;
}
}
考虑同步的话可以加上相应的同步锁:
public static synchronized Singlton getInstance(){
if(instance == null){
instance=new Singlton();
}
}
2.静态内部类实现
public class Singlton{
private Singlton(){
}
private static class InstanceHolder{
public static final Singlton instance=new Singlton();
}
public static Singlton getInstance(){
return InstanceHolder.instance;
}
public void sFunc(){
//do something;
}
}
天生线程安全(网评:最好的实现方式)
3.类变量实现(俗称饿汉式)
public class Singlton{
private Singlton(){
}
private static final Singlton instance=new Singlton();
public static Singlton getInstance(){
return instance;
}
public void sFunc(){
//do something;
}
}
线程安全
4.枚举实现
public enum SingleInstance{
Instance;
private SingleInstance(){
}
public void doFunc(){
//do something
}
}
调用方式:
SingleInstance.Instance.doFunc();
ps:JDK1.5之后才可以使用
四、类图
五、总结
单例模式在项目中被经常用到,比如Android中的Log类,WindowManagerGlobal类都是用单例模式实现的,因此掌握单例模式是一项必备技能,至于用那种方式实现单例模式还需要根据具体的使用场合来做决定。