在我们的开发中,有很多地方会用到单例模式,那么会写基本的单例模式使我们基本的素养,如果说现在不会手写单例模式的,那么一定是不合格的开发人员,下面就是单例模式的两种模式,一种是饿汉模式,另外一种是懒汉模式
package 单例模式;
import java.io.Serializable;
//饿汉模式
public class Student implements Serializable {
private Student() { //这里将构造器私有化 目的就是禁止其他程序创建该类的对象,同时也是在提醒其他人这里用的是单例模式,
//不要随意修改
}
private static final Student instance = new Student(); //这里用static是该类一加载的时候就创建其对象
public static Student getInstance() {
return instance; //提供一个方法供其得到其对象
}
}
//懒汉模式
package 单例模式;
public class LazyMan {
private LazyMan(){
};
public volatile static LazyMan lazyMan; //这里用到了volatile关键字是为了防止指令重排
public static LazyMan getInstance(){
if (lazyMan==null){ //这里用到了双重检测,以防在高并发的情况下出现多次创建对象的情况
synchronized (LazyMan.class){
if (lazyMan==null){
lazyMan=new LazyMan();
}
}
}
return lazyMan;
}
}
以上就是两种模式的基本写法!
网友评论