码迷,mamicode.com
首页 > 移动开发 > 详细

android 单例模式

时间:2016-03-12 13:15:52      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

单例模式特点:

1、一个类只能有一个实例

2、自己创建这个实例

3、整个系统都要使用这个实例

单例模式的形式:

1、饿汉式单例类

public class Singleton {

private Singleton(){}

//在自己内部定义自己一个实例,是不是很奇怪?

//注意这是private 只供内部调用

private static Singleton instance = new Singleton();

//这里提供了一个供外部访问本class的静态方法,可以直接访问

public static Singleton getInstance() {

return instance;

}

}

2、懒汉式单例类

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

//使用时生成实例,提高了效率!

if (instance==null)

instance=new Singleton();

return instance; }

}

第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。

注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全

 

3、比较常使用的是:

public class Singleton {

private volatile static Singleton singleton;

private Singleton(){}

public static Singleton getInstance(){

if(singleton==null){

synchronized(Singleton.class){

if(singleton==null){

singleton=new Singleton();

}

}

还可以参考一下android的Activity加载模式:

1、singleTop

2、singleTask

3、singleInstance

android 单例模式

标签:

原文地址:http://www.cnblogs.com/xulibing/p/5268342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!