Android 单例模式

前言:对学习的一种总结

单例模式的定义

确保某一个类只有一个实例

使用场景

创建一个对象需要消耗的资源过多,如要访问I0和数据库等资源

单例模式的实现方式

1.懒汉模式
2.饿汉模式
3.DCL
4.静态内部类单例模式
以上四种基本耳熟能详,但是我这里想说的一点是DCL失效问题
要解释这点首先要知道原子操作的概念,
所谓原子操作就是一次性将事情做好,没有分步。
解释:DCL失效问题的根源就是new对象的时候不是一个原子操作,而是分了三步
1.给实例分配内存
2.调用构造方法,初始化成员字段
3.将对象指向分配的内存空间(此时对象已经不为空了)
而java编译器又允许处理器乱序执行
这就会导致第一个进来的 有可能是132的执行顺序,因为执行了3,有了实例,所以再进来的就会直接拿走这个实例,因为2没有执行,所以这个实例是空的,因此问题就出现了
后来
在jdk1.5之后,具体化了volatile关键字来解决了这一问题
5.枚举单例,这个是我之前没有接触到的,但是吧,我感觉我不会用吧

public enum SingletonEnum{
INSTANCE;
public void doSomething(){
.....
}
}

先这么多吧,后续还会补充

喵印~~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 设计模式demo索引 Android 23种设计模式 前言 单例模式是运用最广泛的设计模式之一,在...
    Yink_Liu阅读 17,042评论 0 11
  • 目录 定义 使用场景 UML类图 实现方式 饿汉式 懒汉式 Double Check LockDCL双重检查锁 静...
    喵了个呜s阅读 9,303评论 1 12
  • 一.什么是单例 单例对象的类必须保证只有一个实例存在 对单例的实现可以分为两大类——懒汉式和饿汉式,他们的区别在于...
    Android_Liu阅读 6,256评论 0 6
  • 源码地址说明: 此笔记是在看完 Android 源码设计模式解析与实战 中单例模式进行的总结。 使用场景 确保某个...
    yangMr阅读 3,359评论 0 2
  • 单例模式的定义 单例模式保证一个类在全局中只有一个实例对象。 单例模式的几种实现方式 饿汉模式 在类加载的时候就已...
    Samuel_Tom阅读 2,241评论 0 0

友情链接更多精彩内容