單例

1.懶漢式

package com.atguigui.bigdata.chapter06


object TestSingleTon {
  def main(args: Array[String]): Unit = {
    val singleTon = SingleTon.getInstance
    val singleTon1 = SingleTon.getInstance
    println(singleTon.hashCode()+ "  " + singleTon1.hashCode())
    println(singleTon == singleTon1)

  }
}

//構造方法私有化
class SingleTon private() {

}


object SingleTon {
  private var s: SingleTon = null

  def getInstance = {
    if (s == null) {
      s = new SingleTon
    }
  }
}


2.餓漢式

package com.atguigui.bigdata.chapter06


object TestSingleTon extends App {
  val singleTon = SingleTon.getInstance
  val singleTon2 = SingleTon.getInstance
  println(singleTon.hashCode() + " ~ " + singleTon2.hashCode())
  println(singleTon == singleTon2)
}
//將SingleTon的構造方法私有化
class SingleTon private() {
  println("~~~")
}
object SingleTon {
  private val s: SingleTon = new SingleTon
  def getInstance = {
    s
  }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容