Android 中的单例最常用方式

1.常见的单例写法:

单例在开发中用经常被用到,它的特点就像名字一样,在单进程中只会创建一个实例,并提供一个访问它的全局访问点。

常见的单例写法有:

1 懒汉式【线程不安全】

2 懒汉式【****synchronized 线程安全】

3 饿汉式【线程安全】

4 DCL双重校验模式【线程安全】

5 静态内部类单例模式【线程安全】

6 枚举单例【线程安全】

7 使用容器实现单例模式

这里只介绍其中推荐使用的一种 静态内部类单例模式。

2.原理分析

举个栗子:

public class InStanceDemo {

private InStanceDemo() {

}

public static final InStanceDemo getInstance() {

return InstanceHolder.inStance;

    }

private static class InstanceHolder {

public static final InStanceDemo inStance =new InStanceDemo();

    }

}

在这个栗子中,其中的 InStanceDemo 只能通过getInstance()来获得实例。

1.首先InStanceDemo 的构造函数为private修饰的,所以不可以通过new 来新建实例,从而控制了新建实例的途径。

2.这里使用一个静态内部类InstanceHolder 内部的静态参数InStance来控制新建InstanceDemo ,你可能问为什么这么做,这里说明下这么做的好处:

在第一次调用 InStanceDemo.getInstance的时候,会先走静态内部类,对静态内部类中的参数进行加载,从而创建InStanceDemo 的实例,并且 当第二次调用getInstance的时候,静态内部类中的参数已经加载完成,所以只会加载一次,同时,只有在去第一次调用getInstance 的时候才会去创建InStanceDemo 的实例,不调用是并不会创建,从而节省了内存空间,减少了内存消耗。同时 线程是安全的,不必担心线程安全问题。

其他模式参考:http://www.jcodecraeer.com/plus/view.php?aid=8613

你可能感兴趣的:(Android 中的单例最常用方式)