zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java设计模式之单例模式

2023-09-14 09:04:17 时间

推荐资源站:https://zhimalier.com/

单例模式常用两种写法:懒汉式单例、饿汉式单例

单例模式特点:
只能有一个实例
定义一个私有的、静态的本身的对象
创建一个共有的获取这个对象的方法
总之,选择单例模式是为了避免不一致的状态

一、懒汉式单例

在第一次调用的时候实例化自己

public class Lazy {
    //1、 构造方法私有化
    private Lazy(){}
    //2、创建一个私有的静态对象
    private static Lazy instance=null;
    //3、共有的获取这个对象的方法 , static 
    public static Lazy getInstance(){
        if( instance == null){
             instance = new Lazy();
        }
        return instance;
    }
}

Lazy通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Lazy的唯一实例只能通过getInstance()方法访问。但线程不安全

二、饿汉式单例

public class Lazy {
    //1、 构造方法私有化
    private Lazy(){}
    //2、创建一个私有的静态对象
    private static Lazy instance=new Lazy();
    //3、共有的获取这个对象的方法 , static 
    public static Lazy getInstance(){
        return instance;
    }
}

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。
 

三、饿汉式和懒汉式区别


饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,

而懒汉比较懒,只有当调用getInstance的时候,才会去初始化这个单例。