Scala单例模式
Posted 小康新鲜事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala单例模式相关的知识,希望对你有一定的参考价值。
你再主动一点点 我们就有故事了
在 Scala 中,没有 static 这个关键字,但是它也为我们提供了单例模式的实现方法,那就是使用关键字 object。
Scala 中实现单例模式时,除了定义的类之外,还要定义一个同名的 object 对象,这样两者“伴生”。
当单例对象与某个类共享同一个名称时,它被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象可以互相访问其私有成员。
package cool.xiaokang.singleton
/**
* 懒汉式单例模式
*
* @author: 小康
* @date: 2020/4/6 18:01
* 微信公众号:小康新鲜事儿
* 小康个人文档:http://www.xiaokang.cool/
*/
object SingletonDemo {
def main(args: Array[String]): Unit = {
val instance = Singleton.getInstance
println(instance.author + "|" + instance.say)
}
}
//伴生类
//私有化构造器
class Singleton private() {
final var author: String = "小康"
def say = "hello-微信公众号:小康新鲜事儿"
}
//伴生对象
object Singleton {
private var singleton: Singleton = _
//获取实例
def getInstance: Singleton = {
if (null == singleton) {
singleton = new Singleton
}
singleton
}
}
package cool.xiaokang.singleton
/**
* 饿汉式单例模式
*
* @author: 小康
* @date: 2020/4/6 18:01
* 微信公众号:小康新鲜事儿
* 小康个人文档:http://www.xiaokang.cool/
*/
object SingletonDemo {
def main(args: Array[String]): Unit = {
val instance = Singleton.getInstance
println(instance.author + "|" + instance.say)
}
}
//伴生类
//私有化构造器
class Singleton private() {
final var author: String = "小康"
def say = "hello-微信公众号:小康新鲜事儿"
}
//伴生对象
object Singleton {
private var singleton: Singleton = new Singleton
//获取实例
def getInstance: Singleton = singleton
}
如果这篇文章对你有帮助的话,就顺手点个在看,支持一下叭感谢各位!
点击下面“王卡免流”查看黑科技
自己动手,丰衣足食
以上是关于Scala单例模式的主要内容,如果未能解决你的问题,请参考以下文章