| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android单例模式的种类与优缺点 -> 正文阅读 |
|
[移动开发]Android单例模式的种类与优缺点 |
目录 单例模式定义:1.确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式核心原理:1.将构造函数私有化; 使用单例模式需要注意哪几方面的问题:1.对象的资源消耗; 饿汉单例
优点: 缺点: 应用运行时,在非必要的情况下实例化,不节约内存空间 懒汉单例
优缺点: 优点:相较于饿汉单例模式,在使用时才会实例化 缺点:多余的同步。为了保证多线程下单例对象唯一,getInstance()添加 synchronized 关键字,每次调用getInstance方法都会进行同步开销。 DCL 单例(Double Check Lock)
优点:使用时实例化,线程安全,没有多余的同步 缺点:(在并发场景比较复杂,或者低于 JDK6 版本下使用,Dcl可能会失效,这个场景还不太懂 ) 静态内部类单例(推荐)
优点:使用时实例化,线程安全,没有多余的同步 缺点: 枚举单例
优点:写法简单.. 缺点:(enum是不是占用内存多啊...) 容器单例
优点:多种单例类型注入到一个单例管理类,降低使用成本,并隐藏具体实现,降低耦合度。(系统 context 的 getSystemService() 使用容器单例) 缺点:看初始消耗的内存值不值得... 最后静态内部类时如何保证线程安全的:静态内部类的特点:外部类加载时不需要加载静态内部类,不被加载则不占用内存,(延迟加载)当外部类调用getInstance方法时,才加载静态内部类,静态属性保证了全局唯一,静态变量初始化保证了线程安全,所以这里的方法没有加synchronized关键字(JVM保证了一个类的 初始化在多线程下被同步加锁) |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:10:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |