scala:分别使用懒汉式和饿汉式实现单例模式

在java中,单例模式需要满足以下要求:

构造方法私有化,使得本类之外的地方不能使用构造方法new出对象

提供私有静态属性,接收单例对象

公共的、静态的getInstance方法,便于外界拿到单例对象

想了解Java单例模式的请转到:Java单例模式-懒汉式、恶汉式、静态内部类、枚举以及线程安全问题

在scala中

主构造方法私有化,即类名后面加上private修饰

使用类的伴生对象达到Java中的static效果,伴生对象只会加载一次

/** * Desc: SCALA单例设计模式 * -懒汉式 * -饿汉式 */ object Scala16_TestSingleton { def main(args: Array[String]): Unit = { val std1: Student16 = Student16.getInstance() println(std1)//std1和std2输出的地址一样 val std2: Student16 = Student16.getInstance() println(std2) } } //懒汉式 object Student16{ private var s:Student16 = null def getInstance():Student16={ if(s == null){ s = new Student16 } s } } //饿汉式 object Student16{ private var s:Student16 = new Student16 def getInstance():Student16={ s } } //主构造方法私有化 class Student16 private(){}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwzpf.html