Android单例设计模式用的也挺多的,下面写3种常用的吧。
第一种懒汉式:
package com.example.demo10_messenger;
/**
* Created by fuzhihuang on 2017/7/17.
* 单例模式(懒汉式)
*/
public class InstanceClass {
private static InstanceClass mInstanceClass = null;
public static InstanceClass getInstance() {
if(mInstanceClass == null) {
synchronized (InstanceClass.class) {
if(mInstanceClass == null) {
mInstanceClass = new InstanceClass();
}
}
}
return mInstanceClass;
}
}
懒汉式还是很直观的不多bb就是懒,不需要的时候就不加载,需要的时候就调用,至于为什么加同步锁是为了防止多线程并发的情况导致单列模式失效。
第二种饿汉式:
package com.example.demo10_messenger;
/**
* Created by fuzhihuang on 2017/7/17.
* 单例模式(饿汉式)
*/
public class InstanceClass {
private static InstanceClass mInstanceClass = new InstanceClass();
public static InstanceClass getInstance() {
return mInstanceClass;
}
}
正所谓恶汉式,就是一上来就吃(随着类的加载而加载),调用的话也比较直接。速度的话相对第一种较快。
第三种使用内部类持有类的对象:
package com.example.demo10_messenger;
/**
* Created by fuzhihuang on 2017/7/17.
* 内部类持有类的对象
*/
public class InstanceClass {
private static final class InstanceHolder {
private static InstanceClass instance = new InstanceClass();
}
public static InstanceClass getInstance() {
return InstanceHolder.instance;
}
}
其实这种和第一种差不多也是通过调用来加载。