面向对象的世界里,在一个系统或者应用的生命周期中,总会伴随着对象的大量创建和销毁。有的对象生命周期很短,如昙花一现;有的生命周期却很长,跟电视剧的主角一样可以活到最后一集。具有主角光环的这个对象就是单例对象。 单例模式的目的就是确保在系统或应用的生命周期中,一个类Class只有一个实例对象存在。

单例对象的特点之一就是该对象生命周期比较长(当然不排除某个子系统内部的使用完毕后就置null),所以应用的各个子功能或者系统都可以访问使用它(前提是该单例对象是public的)。但是这样会有一个内存泄漏的风险,如果单例对象持有了一个生命周期比较短的对象引用,那么这个短生命周期一直得不到释放从而不能被系统回收,就会造成内存泄漏。比如Android中常见的Context、activity对象的泄漏。对短生命周期的对象来说,有一种求死不能的感觉。

另外该对象的关联的状态和数据是不能有变化的,否则会引起数据的错误。

在Android中可能常见的单例对象有:
1、EventBus对象
2、Glide对象
3、OkhttpClient对象
4、Android的ApplicationContext对象

设计模式之单例模式浅谈相关推荐

  1. js架构设计模式——由项目浅谈JS中MVVM模式

    1.    背景 最近项目原因使用了durandal.js和knockout.js,颇有受益.决定写一个比较浅显的总结. 之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很 ...

  2. 浅谈Java设计模式

    浅谈设计模式(Design Pattern) 序言: 与很多软件工程技术一样,模式起源于建筑领域,软件工程只有短短的几十年,与已经拥有几千年底蕴的建筑工程相比,后者有太多值得学习和借鉴的地方.1995 ...

  3. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  4. 浅谈以太坊智能合约的设计模式与升级方法

    浅谈以太坊智能合约的设计模式与升级方法 1. 最佳实践 2. 实用设计案例 2.1 控制器合约与数据合约: 1->1 2.2 控制器合约与数据合约: 1->N 2.3 控制器合约与数据合约 ...

  5. 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁

    浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...

  6. 浅谈javaweb三大框架和MVC设计模式

    浅谈javaweb三大框架和MVC设计模式 转载自:http://blog.csdn.net/sunpeng19960715/article/details/50890705 小序:博主以前在学jav ...

  7. 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]

    为什么要取这样的一个题目呢?主要是因为今天去了一家公司和他们谈了谈,本来是指望做兼职的,谈到最后当然是不成了.去谈的是地图制作(可兼职)一职,要求是地图制图经验,最后加了个有WEBGIS开发经验.本来 ...

  8. 浅谈全局视角下的设计模式

    写在前面: 以下内容,更多的是自己的思考总结,不可避免出现有争议的地方,请谨慎食用. 浅谈全局视角下的设计模式 1.业务开发经常使用的设计模式有哪些? 2.为什么有些设计模式不常见呢? 3.为什么这些 ...

  9. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  10. java中单例的应用_浅谈Java中单例模式的几种应用

    目录 浅谈Java中单例模式的几种应用 第一种:懒汉式 第二种:饿汉式 第三种:双重检索式 第四种:注册登记式 第五种:内部类形式 浅谈Java中单例模式的几种应用 日常开发中,为了提高我们系统中对象 ...

最新文章

  1. 自定义hive url parse函数
  2. linux系统配置免密登录
  3. 铺地毯(洛谷-P1003)
  4. LeetCode--62.不同路径(排列组合,动态规划)
  5. signature=1982ab87dc2679ab32a4cc77dcd4ace3,Spin phonon coupling in frustrated magnet CdCr$_2$O$_4$
  6. docker update
  7. HardSoft-Viewer PHP_index.php
  8. [转] 寻找第k大的数
  9. 机器学习课程笔记【十二】- 主成分分析
  10. 计算机科学与技术专接本的历年真题,10年计算机专业专接本真题
  11. WSO2流处理器相关学习(1)快速入门指南【转】
  12. 地类图斑代码大全_使用字段计算器对同一地类图斑自动编号(标记重复记录)...
  13. hibernate中的检索策略
  14. 前端网页打印window.print()
  15. 配置文件加密 HikariDataSource
  16. 【免费扩容onedrive】
  17. 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图
  18. GDP、经济与社会数据下载网站整理
  19. 当上CEO,迎娶白富美,走向人生巅峰,只有这背水一战!
  20. 4. 非监督学习与强化学习简介

热门文章

  1. mysql5.6 table cache_MySQL 5.6下table_open_cache参数优化合理配置详解
  2. 变量不在选择列表中_Python3中的表达式运算符
  3. python数据增强代码_基于Python的图像数据增强Data Augmentation解析
  4. JavaWeb:Redis
  5. Springboot2.2.6中的RSocket使用, RSocket 进行反应式数据传输
  6. ORB-SLAM3 一张图梳理rgbd_tum.cc主流程
  7. 线性表_循环链表(增减删查 + 约瑟夫环问题 代码实现 )
  8. html/jsp如何固定图像的大小
  9. Unity学习笔记(二)——Unity ML-agents安装与配置(1.9.1)
  10. NodeJS连接MySQL