Scala中单例的意义

Scala中单例的意义,scala,Scala,我知道singleton是一个“只有一个实例并提供全局访问点的类”。但scala中的singleton是什么意思?singleton对象如何在scala中应用singleton的概念?singleton对象/对象在scala中创建了什么 对象是一个只有一个实例的类。它在被引用时是惰性创建的,就像惰性val一样 所以无论你什么时候 object SomeObject 编译器将创建一个类和该类的一个实例,并对其进行延迟初始化 这使得对象成为Java意义上的单一对象(保证类的单一实例)对象是一个只

我知道singleton是一个“只有一个实例并提供全局访问点的类”。但scala中的singleton是什么意思?singleton对象如何在scala中应用singleton的概念?singleton对象/对象在scala中创建了什么


对象是一个只有一个实例的类。它在被引用时是惰性创建的,就像惰性val一样

所以无论你什么时候

object SomeObject
编译器将创建一个类和该类的一个实例,并对其进行延迟初始化


这使得
对象
成为Java意义上的单一对象(保证类的单一实例)

对象是一个只有该类一个实例的类。每当引用该对象时,就会创建该对象,否则不会创建该对象。它的行为完全像一个惰性计算

下面是一个带有方法的对象示例:

package logging

object Logger {
def info(message: String): Unit = println(s"INFO: $message")
}
info方法可在程序的任何位置使用

`import logging.Logger.info

class Project(name: String, daysToComplete: Int)

class Test {
  val project1 = new Project("TPS Reports", 1)
  val project2 = new Project("Website redesign", 5)
  info("Created projects")  // Prints "INFO: Created projects"
}`
让我们看看如何在程序中使用info方法

`import logging.Logger.info

class Project(name: String, daysToComplete: Int)

class Test {
  val project1 = new Project("TPS Reports", 1)
  val project2 = new Project("Website redesign", 5)
  info("Created projects")  // Prints "INFO: Created projects"
}`

感谢您的解释。请告诉我术语lazy initialized在这里的意思是什么?这意味着它将在第一次被访问时被初始化,类似于
lazy val
的工作方式。“我知道singleton是一个“只有一个实例并提供全局访问点的类”-不,这就是单例软件设计模式。Scala中singleton一词的使用与singleton设计模式无关,它只是该词的正常标准英语含义。