饿汉式

//Java实现
public class SingletonCless {private static SingletonCless instance=new SingletonCless();private SingletonCless(){}public static SingletonCless getInstance(){return instance;}
}
//Kotlin对象声明方式实现
object SingletonCless {var text:String="饿汉式单利"fun show(){println(text)}
}

对于Kotlin的对象声明,初次接触Kotlin的可能会有些陌生,包括下面即将用到的半生对象,不懂的小伙伴点击传送门先去了解下 —>传送门

懒汉式(线程安全的)

//Java实现
public class SingletonClass2 {private static SingletonClass2 instance;private SingletonClass2(){}public static synchronized SingletonClass2 getInstance(){//使用同步锁if(instance==null){instance=new SingletonClass2();}return instance;}
}//Kotlin伴生对象方式实现
class SingletonClass2 private constructor(){init {println("懒汉式单利实例化了")}//伴生对象companion object{//自定义属性访问器,field为Kotlin幕后字段private var instance:SingletonClass2?=nullget() {if (field==null){field= SingletonClass2()}return field}@Synchronizedfun getInstances():SingletonClass2{return instance!!}}fun show(){println("我是张三")}
}

上述的Kotlin代码中,在伴生对象中我们自定义了一个属性访问器,在其中实例化对象并赋值给幕后字段field,除了几个新概念,其逻辑跟Java基本相似

双重校验锁式(Double Check)

//Java实现
public class SingletonClass3 {private volatile static SingletonClass3 instance;private SingletonClass3(){} public static SingletonClass3 getInstance(){if(instance==null){synchronized (SingletonClass3.class){if(instance==null){instance=new SingletonClass3();}}}return instance;}
}//Kotlin实现
class SingletonClass3 private constructor(){init {println("我被实例化了")}companion object{val getInstances:SingletonClass3 by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){SingletonClass3()}}fun show(){println("实例化的方法")}
}

此处用到了Kotlin的延迟属性 Lazy

静态内部类式

//Java实现
public class SingletonClass4 {private static class SingletonHolder{private static SingletonClass4 instance=new SingletonClass4();}private SingletonClass4(){}public static SingletonClass4 getInstance(){return SingletonHolder.instance;}
}
//kotlin实现
class SingletonClass4 private constructor() {companion object {val instance = SingletonHolder.holder}private object SingletonHolder {val holder= SingletonClass4()}}

Kotlin与Java单利模式对比实现相关推荐

  1. 《From Java To Kotlin》-Kotlin与Java的简单对比

    前言: 原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin 本文也只是简单比较kotlin与java的不同之处,实际学习kotl ...

  2. 看完这篇java单利模式文章,面试的时候再也不怕了

    来源:https://blog.csdn.net/weixin_44170221/article/details/106365623 哇塞,被称为Java中最简单的设计模式--单例设计模式.这都可以有 ...

  3. java单利模式写法

    public class Something {private Something() {}private static class LazyHolder {public static final S ...

  4. Java 设计模式之单利模式

    一.首先介绍一下单例模式:      单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个的全 ...

  5. Java中的单利模式介绍

    单利模式:本来是不准备写的,但是最近发现好多公司面试时都会或多或少的提到单利模式,因此今天把单利模式拉出来说说. 定义:只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且 ...

  6. Kotlin与Java语法对比总结

    文章目录 前言 一.变量 二.函数 三.程序的逻辑控制 1.条件语句 2.循环语句 四.面向对象编程 1.类与对象 2.继承 3.构造函数 4.接口 5.数据类与单例类 五.Lambda编程 1.集合 ...

  7. kotlin与java对比

    为什么80%的码农都做不了架构师?>>>    kotlin作为一个现代的适用于多平台的静态类型语言越来越受到java开发同学的喜爱,尤其是android开发同学的喜爱,下面从几个方 ...

  8. kotlin的Delegates与lateinit对比

    首先: The two models are similar, and one predates the other. Delegates.notNull() (api reference) is b ...

  9. Kotlin极简教程:第10章 Kotlin与Java互操作

    Kotlin is 100% interoperable with Java™ and Android™ 在前面的章节中,我们已经学习了Kotlin的基础语法.类型系统.泛型与集合类.面向对象与函数式 ...

最新文章

  1. python调用webservice接口实例_python发布webservice接口
  2. EM: 生而为菌,自强不息-嗜酸杆菌在重金属污染土壤中的生态适应性机制
  3. 修饰符(public/private/default/protected)
  4. GDI+有Bitmap类。
  5. 卸载 windows_Windows 10可能很快会自动卸载有问题的Windows更新
  6. Apollo注册到自己的Eureka注册中心+配置中心集群
  7. PHP上传文件大小和时间限制
  8. 21.Shiro在springboot与vue前后端分离项目里的session管理
  9. 织梦采集侠教程设置免费版本
  10. 某电商销售数据分析 SQL 面试题解析
  11. 计算机组成基础(2)-- 微体系结构层
  12. HDU 6599 Palindromic_Automaton
  13. 树莓派4B(Ubuntu20.04)使用LCD1602液晶屏开机自动显示IP及其他信息
  14. 爬虫学习:基本库的使用
  15. 支付宝扫码支付-PC版(沙箱环境)
  16. 【vue+HT+flyTo】HT图扑软件中的flyTo应用
  17. 我,单身沪漂,想有只猫
  18. wpf net6.0 桌面应用程序打包
  19. 国家自然科学基金 结题项目 查询网站
  20. Amazon AppStream服务介绍

热门文章

  1. 关于如何成为一名爬虫工程师
  2. 无心剑英汉双语诗004.《静心》
  3. java中如何进行日期时间比较?4种方法介绍
  4. 《趣学算法(第2版)》读书笔记 Part 4 :贪心算法基础(操作)
  5. php微信退款回调通知,微信退款异步回调通知
  6. 公网ip地址w.x.y.z可以用在局域网内吗?
  7. scrapy篇(2)scrapy中的spider部分
  8. Git命令大全或者使用Git命令操作也是Git命令总结
  9. 专升本计算机基础笔记一
  10. 微策略MicroStrategy校园招聘2013.10.21面试题