Android 最常用的设计模式一 安卓源码分析—单例模式singleInstance

本文深入探讨了单例模式的两种主要实现方式:饿汉式和懒汉式。详细介绍了懒汉式的双检查锁机制(DoubleCheckLocking)并提供了具体代码示例。适合希望了解单例模式实现原理及应用场景的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.保证一个类仅有一个实例,并提供一个访问它的全局访问点

2.私有,静态的,可以通过get方法获取

3.android中有很多系统级别的全局变量,如时间,输入法,账户,状态栏等等

4.资源共享情况下,getInstance()必须适应多线程并发访问。

一.饿汉式单例:

    饿汉式单例是指在方法调用前,实例就已经创建好了


懒汉单例
懒汉就是在类加载时不自动初始化单例对象,你需要时手动生成


方式一:效率低


这里的实现能够保证多线程并发下的线程安全性,但是这样的实现将全部的代码都被锁上了,同样的效率很低下。
针对某些重要的代码进行单独的同步,而不是全部进行同步,可以极大的提高执行效率

方式二:完美单例: Double Check Locking   双检查锁机制 (推荐)

public static MyApplication getApp(Application application) {
    if(sInstance == null) {
        synchronized (MyApplication.class) {
            if(sInstance == null) {
                sInstance = new MyApplication(application);
            }
        }
    }
    return sInstance;
}

总结:
饿汉式单例:类加载的时候加载,是默认同步的
懒汉式单例:用双检查锁机制  


参考博客:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值