只用一行代码的单例模式

作为Android开发者对Kotlin语言应该不会陌生,

下面这个单例模式就是用Kotlin写的,

是的你没看错,这一行代码就实现了一个单例。

为啥这么屌?

Java的五种单例模式写起来那叫一个复杂,

特别是在考虑了并发情况下单例的实现,最短的单例也要10行左右。

Kotlin是怎么做到的?

Kotlin的object

Kotlin有个 object 关键字,object所表示的意思是声明一个对象,

上面的代码的意思是声明了一个对象(不需要指定类),对象叫 SimpleSingleton,

这个对象会在class被加载的时候就实例化完成,所以它是线程安全的,

对应Java的话就是饿汉单例。

这么说可能不太好理解,下面是反编译它的字节码,

注意里面的 INSTANCE 对象,这里就是实例化后的单例。

这个类做的事情就是在静态代码块里通过构造方法实例化一个静态的对象,

翻译成Java代码会比较好理解,它是下面这样的

怎么使用这个单例呢?

没接触过Kotlin的同学可能比较懵逼,这个单例我该怎么用?

特别是当它在和Java混编的时候Java该怎么调?

我们把上面的单例丰富一下,给它一个计算方法让它返回两个数的和,

唯一的区别是Java需要用 INSTANCE 来拿到单例对象而已。

语法糖

看了Kotlin编译后的字节码就明白了它的单例原理,其实只是一种语法糖,

在Kotlin中还有很多的语法糖,比如闭包,比如foreach(),以后会多多介绍Kotlin的东西。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180706G09EHO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券