一、 单例模式是我们在开发中经常要用到的一个非常简单的设计模式。单例模式有以下特征:
- 构造方法不对外开放,可以是private属性,防止其他人在不知情的情况下用new去创建实例;
- 通过一个静态方法或者是一个枚举返回单例类的对象;
- 注意多线程的应用场景;
- 注意单例类对象在序列化的时候不会重新创建对象。
二、单例模式的创建方法
单例模式的创建有两种方法,一种是饿汉模式,一种是懒汉模式。话不多少,直接上代码:
- 饿汉模式
class Single {
private Single(){}
private static Single single= new Single();
public static Single getInstance(){
return single;
}
}
- 懒汉模式(双重校验)
class Single {
private Single(){}
private static Single single= null;
public static Single getInstance(){
if ( single == null ) {
synchronized (Single.class) {
if ( single == null ) {
single = new Single();
}
}
}
return single;
}
}
为了保证线程安全,以及JVM不会出错(JVM编译器的指令重排问题),更小心一些可以将single加上修饰词volatile。
另外还有一些其他方式实现的单例模式,这里就不做过多介绍了,用的更多的是懒汉模式(双重校验)这种模式。
网友评论