单例模式
2016-02-21 12:33
239 查看
前言
设计模式的重要性,不言而喻,但是我们平时在做android开发的时候却很少关注,这其中最重要的一个原因可能是开发中是以实现功能为主,然而一般的项目很少重构,都是一次性的,除非是产品平台级别的项目,才会有重构这一环节,重构中最重要的,最核心的一个环节的就是使用设计模式将原先的代码进行整理。那么我这篇博文跟大家讲解一下开发中的单例模式。单例模式的分类
饿汉式懒汉式
对象初始化时机
饿汉式是当类加载器加载类初始化的时候将对象初始化。(也称为预加载)懒汉式是当需要对象的时候进行初始化。(与称为延迟加载)
应用场景
上下文管理器全局对象管理器
单例模式在Android系统中的应用
Android 应用启动的时候每个进程都会创建一个Application对象,这个对象并且是全局唯一的。通过这个对象我们可以访问很多资源。比如字符串,颜色等等单例模式在我们自己程序中的应用
一般的应用都有个人中心这个模块,我们将这个模块进行抽象,其实就是一个UserManager,这个就是一个用户上下文管理器,个人中心的所有操作都有该对象发起。下面就以不同形式来的单例模式来实现UserManager懒汉式实现
public class UserManager{
private static volatile UserManager sInstance = null; private UserManager(){ // init } public static UserManager getInstance(){ if(sInstance==null){ synchronized(UserManager.class){ if(sInstance==null){ sInstance = new UserManager(); } } } return sInstance; }
}
饿汉式实现
public class UserManager{
private static final UserManager INSTANCE = new UserManager(); private UserManager(){ }
}
那这两种模式分别什么时候使用了,我个人认为,作为移动端开发,最好使用懒汉式加载,毕竟移动设备分配给每个app的内存是有限的,并且基于类加载器的原理,在类加载到内存的时候,类中的静态成员将自动初始化。那么饿汉式模式下,加载类中的一个静态变量,导致对象的初始化,显然移动端不太合适。
总结
单例模式是开发中最常用的设计模式,也是相对其他设计模式,最简单的,代码不难理解,下篇博文讲解代理模式在Android系统的应用。今天就写到这里了。相关文章推荐
- 炮弹游戏1
- 【Linux 基础篇】之软件管理.
- JAVA中的集合与泛型整理总结
- 《转》 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
- Html5大文件断点续传
- 二叉树——二叉树的遍历
- Cocos2d-x PageView的使用
- [Python] re(正则表达式) 模块使用方法
- 基于AJAX的长轮询(long-polling)方式实现简单的聊天室程序
- maven核心概念--生命周期
- 函数参数传递
- maven核心概念--生命周期
- 如何用AndroidStudio导入github项目
- 程序结构&&程序设计(三)
- Javascript自学-6
- reverse mapping checking getaddrinfo for bogon failed – POSSIBLE BREAK-IN ATTEMPT! 错误
- 骗骗骗!教会你创业的8大成功骗术
- 360将推出视频版的“今日头条”
- 一个工作快八年的老IT人士这几年沉浮总结的职场经验教训
- LaTeX学习记录