js 做网站,电子商务网站建设与管理的总结,做网站销售怎么开发客户,辽宁工程建设信息网诚信库怎么填kotlin实现单例模式#xff0c;大体分为两种方式#xff0c;一种饿汉式单例模式#xff0c;一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object关键字#xff0c;就实现了饿汉式单例模式#xff1a;
object singletonDemo {
}在kotlin中#xff0c;使用这种方式…kotlin实现单例模式大体分为两种方式一种饿汉式单例模式一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object关键字就实现了饿汉式单例模式
object singletonDemo {
}在kotlin中使用这种方式基本就能应对大部分的情况。而且这种方式在类加载的时候初始化还是线程安全的。 补充说明一下 类加载的时机或者说类的初始化两者是类加载到内存中达到可用状态的两个阶段包括创建类的实例对象或者类的静态成员访问类的反射父类中的子类初始化的时候虚拟机特定类。所以并不是程序初始化的时候就会加载所有的类声明一个类型的变量时也不会加载该类而是真的使用该类的时候才会去加载。 2.懒汉式单例模式 kotlin中实现双重锁校验的懒汉式单例模式也很简单
class SingletonDemo private constructor() {companion object {val instance: SingletonDemo by lazy(mode LazyThreadSafetyMode.SYNCHRONIZED) {SingletonDemo()}}
}通过伴生对象实现类似于static的静态变量同时通过by lazy实现了属性委托延迟初始化即在使用instance属性字段的时候才会去初始化。同时由于by lazy是线程安全的也就实现了多线程的校验功能。