您的位置:首页 > 其它

单例模式

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系统的应用。今天就写到这里了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: