单例模式的实现方式有懒汉,饿汉,双重校验锁,枚举,内部类等等,写法就不全部列举了。Android源码中有一个单例辅助类/frameworks/base/core/java/android/util/Singleton.java,可以实现懒汉式单例,写法挺奇特的,虽然是个hide类,不过拷贝出来就可以用了。
package android.util;
/**
* Singleton helper class for lazily initialization.
android项目实例源码、*
* Modeled after frameworks/base/include/utils/Singleton.h
*
* @hide
*/
android多进程单例。public abstract class Singleton {
private T mInstance;
protected abstract T create();
public final T get() {
synchronized (this) {
android单例模式类加载。if (mInstance == null) {
mInstance = create();
}
return mInstance;
}
android 单例模式、}
}
正常懒汉单例
public class SingletonDemo {
private static SingletonDemo mInstance;
Android 源码。public static final SingletonDemo get() {
synchronized (SingletonDemo.class) {
if (mInstance == null) {
mInstance = new SingletonDemo();
}
android单例模式应用场景。return mInstance;
}
}
}
懒汉+双重校验单例
android简单app实例代码、public class SingletonDemo {
private static SingletonDemo mInstance;
public static final SingletonDemo get() {
if (mInstance == null) {
synchronized (SingletonDemo.class) {
mqtt android,if (mInstance == null) {
mInstance = new SingletonDemo();
}
}
}
简述android源代码编译过程、return mInstance;
}
}
变种懒汉单例
public class SingletonDemo {
Android单例、public static final SingletonDemo get() {
return INSTANCE.get();
}
private static final Singleton INSTANCE = new Singleton() {
protected SingletonDemo create() {
android简单开发app实例代码?return new SingletonDemo();
}
};
}
懒汉式单例一般都会再加个双重校验的判断,避免每次调用get()都加锁,影响性能,Android源码中Singleton.java工具类并没有做双重校验(看了下googlesource中的Singleton.java,也是6年前提交的代码了),所以我们在将Singleton.java拷贝出来使用的时候可以加个双重校验优化下。Singleton.java封装了create,get模版,及get中的校验逻辑,从而SingletonDemo中的实现代码就可以更加的简单:1.create()一个单例对象,2.在需要的时候get()。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态