Scala单例模式

Posted 小康新鲜事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala单例模式相关的知识,希望对你有一定的参考价值。


Scala单例模式




 你再主动一点点 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
  }
}

Scala单例模式

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单例模式



Scala单例模式

如果这篇文章对你有帮助的话,就顺手点个在看,支持一下叭Scala单例模式Scala单例模式感谢各位!


点击下面“王卡免流”查看黑科技


Scala单例模式

Scala单例模式


自己动手,丰衣足食



点击下方“留言墙”给小康留言

Scala单例模式



以上是关于Scala单例模式的主要内容,如果未能解决你的问题,请参考以下文章

Scala面向对象和模式匹配

3Scala源文件的编写和运行及编译结果的反编译深入分析(单例设计模式)

详解 Scala 模式匹配

设计模式之单例模式

Scala教程之:函数式的Scala

Scala 的单例对序列化都有哪些保证?