android项目实例源码,android 源码中的单例,Android源码中的一种单例实现

 2023-09-22 阅读 19 评论 0

摘要:单例模式的实现方式有懒汉,饿汉,双重校验锁,枚举,内部类等等,写法就不全部列举了。Android源码中有一个单例辅助类/frameworks/base/core/java/android/util/Singleton.java,可以实现懒汉式单例,写法挺奇特的,虽然是

单例模式的实现方式有懒汉,饿汉,双重校验锁,枚举,内部类等等,写法就不全部列举了。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()。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/82628.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息