前言
设计模式的重要性,不言而喻,但是我们平时在做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系统的应用。今天就写到这里了。