Scala的单例对象

来源:互联网 发布:360如何优化系统 编辑:程序博客网 时间:2024/06/06 09:47

Scala中没有static关键字,它提供了object关键字来实现单例模式。

Scala中使用单例模式时,除了定义类之外,还需要定义同名的object。类为对象的伴生类(companion class),对象为类的伴生对象(companion object),两者可以互相访问其私有成员。

// 私有构造方法class Marker private(val color:String) {  println("创建" + this)    override def toString(): String = "颜色标记:"+ color  }// 伴生对象,与类共享名字,可以访问类的私有属性和方法object Marker{      private val markers: Map[String, Marker] = Map(      "red" -> new Marker("red"),      "blue" -> new Marker("blue"),      "green" -> new Marker("green")    )        def apply(color:String) = {      if(markers.contains(color)) markers(color) else null    }          def getMarker(color:String) = {       if(markers.contains(color)) markers(color) else null    }    def main(args: Array[String]) {         println(Marker("red"))          // 单例函数调用,省略了.(点)符号  println(Marker getMarker "blue")      }}

原创粉丝点击