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

相關文章
相關標籤/搜索