Java单例模式学习(懒汉式)

本文介绍了Java单例模式中的懒汉式,它在需要时才实例化对象,避免了资源浪费。文章详细讲解了懒汉式的创建关键点,包括构造函数私有化、对象初始化为null以及在getInstance方法中的实例化判断。此外,通过测试验证了懒汉式的实例唯一性,并提出了线程安全性的问题,暗示了后续改进的方向。

目录

1、什么是懒汉式?

2、创建懒汉式关键点;

3、代码;

4、测试;

5、懒汉式改进点.


1、什么是懒汉式?

单例模式的懒汉式指的是程序运行的时候不会主动实例化单例对象,主动用到单例对象时才实例化单例对象。比如我想喝冰可乐,我先买了一箱可乐,然后想喝的时候才拿一瓶放冰箱;如果我开始就把一箱可乐放冰箱,则会浪费冰箱的空间。

2、创建懒汉式关键点;

1)将构造函数用private修饰,防止外界调用从而创建对象;

2)实例化对象为null

3)在getInstance方法中对instance对象做判断,如果为null,则创建对象并返回;如果不为null,则直接将instance对象返回。

3、代码;

public class Singleton {
    // 1、将构造函数置为私有,防止外部调用从而创建对象;
    private Singleton(){}
    // 2、 实例化对象为null
    private static Singleton instance = null ;
    // 3、提供一个公共静态类方法供外界获取该类对象
    public static Singleton getInstance(){
        // 如果实例对象为null,则创建对象,如果不为null,则直接返回
        if (instance==null){
            instance=new Singleton();
        }
        return instance;
    }
}

4、测试;

public class SingletonTest {
    public static void main(String[] args) {

        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        // 引用类型用“==”比较的是对象内存地址,如果指向同一内存地址,则为true
        System.out.println(s1==s2);
    }
}

测试结果:

可以看出两次s1和s2为同一实例对象。

5、懒汉式改进点.

懒汉式是线程非安全的写法,后边可以将代码改造成线程安全的懒汉式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值