单例模式

在我们的开发中,有很多地方会用到单例模式,那么会写基本的单例模式使我们基本的素养,如果说现在不会手写单例模式的,那么一定是不合格的开发人员,下面就是单例模式的两种模式,一种是饿汉模式,另外一种是懒汉模式

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;
    }
}

以上就是两种模式的基本写法!

你可能感兴趣的:(单例模式)