scala伴生对象-单例模式
1.伴生对象
package com.deng.scala object Test1 { def main(args: Array[String]): Unit = { val s1 = Student.newObj("ling",23) val s2 = Student("ling",23) println(s1) println(s2) } } // 定义类 class Student(var name:String,var age:Int){ def printInfo():Unit={ println(s"name=$name,age=$age") } } // 伴生对象 object Student { def newObj(name:String,age:Int):Student=new Student(name,age) def apply(name:String,age:Int):Student=new Student(name,age) }
2.伴生对象-单例模式
package com.deng.scala object Test { def main(args: Array[String]): Unit = { val s1 = Singleton.getInstance() val s2 = Singleton.getInstance() println(s1) println(s2) } } // 定义类 class Singleton(var name:String,var age:Int){ def printInfo():Unit={ println(s"name=$name,age=$age,shcool=${Singleton.shcool}") } } // 伴生对象 /* * 该类可以直接方法该伴生对象中的私有成员和方法 * */ // 饿汉式单例模式 //object Singleton { // val shcool:String="beida" // private val obj:Singleton= new Singleton("ling",age=23) // def getInstance():Singleton=obj //} // 懒汉式单例模式 object Singleton { // val shcool:String="beida" private var obj:Singleton= _ def getInstance():Singleton={ if (obj==null) { obj=new Singleton("ling",age=23) } obj } }
有疑问可以加wx:18179641802,进行探讨