当前位置: 代码迷 >> 综合 >> Kotlin学习笔记-Kotlin单例模式的实现(线程安全的懒汉式,可以传参)
  详细解决方案

Kotlin学习笔记-Kotlin单例模式的实现(线程安全的懒汉式,可以传参)

热度:70   发布时间:2024-01-25 09:15:50.0

前言:从java转到Kotlin是编写代码风格上是非常的不习惯,特别是单例模式传参的时候,是比较头疼的。这次就介绍一下可以进行传参的线程安全的懒汉式写法。大家也可以参考这个人写的《Kotlin下的5种单例模式》


以CollectionDao的增删改查为例子

在java中我们通常这样做(线程安全的懒汉式)

public class CollectionDao {//2 声明一个对象private static CollectionDao sInstance = null;private Context mContext;private CollectionOpenHelper mHelper;//1 私有的构造方法private CollectionDao(Context context) {mContext = context;mHelper = new CollectionOpenHelper(context);}// 3公开方法获取对象public static CollectionDao getInstance(Context ctx) {if (sInstance == null) {synchronized (CollectionDao.class) {if (sInstance == null) {sInstance = new CollectionDao(ctx);}}}return sInstance;}//对数据库的增删改查//......
}

在Kotlin可以这样写(线程安全的懒汉式)

class CollectionDao private constructor(ctx: Context) {private var context: Contextprivate var newsOpenHelper: NewsOpenHelperinit {context = ctxnewsOpenHelper = NewsOpenHelper(ctx)}companion object {@Volatileprivate var instance: CollectionDao? = nullfun getInstance(ctx: Context): CollectionDao {if (instance == null) {synchronized(CollectionDao::class) {if (instance == null) {instance = CollectionDao(ctx)}}}return instance!!}}//对数据库的增删改查//......
}

加油!