scala单例模式

在 Scala 中,是没有 static 这个东西的,可是它也为咱们提供了单例模式的实现方法,那就是使用关键字 object。程序员

Scala 中使用单例模式时,除了定义的类以外,还要定义一个同名的 object 对象,它和类的区别是,object对象不能带参数。ide

当单例对象与某个类共享同一个名称时,他被称做是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象能够互相访问其私有成员。函数

package demo

object Marker {
  private val markers: Map[String, Marker] = Map(
      "red" -> new Marker("red"),
      "blue" -> new Marker("blue"),
      "green" -> new Marker("green")
    )
    def getMarker(color:String) = { 
      if(markers.contains(color)) markers(color) else null
    }
  def main(args:Array[String]){
//    println(new Marker("red"))
//    println(Marker.getMarker("blue"))
  }
}
class Marker private(var color:String){
  println("建立" + this)
  override def toString():String = {
    return "颜色标记:"+color
  }
}

结果this

建立颜色标记:red
建立颜色标记:blue
建立颜色标记:green

对于Java程序员比较陌生的是包含了main函数的object语句。这样的语句定义了一个单例对象:一个有且仅有一个实例的类。object语 句在定义了一个叫HelloWorld的类的同时还定义了一个叫HelloWorld的实例。这个实例在第一次使用的时候会进行实例化。code

相关文章
相关标签/搜索