单例,必须用伴生对象来实现
1、JDBCUtil
Scala中没有静态方法和静态字段,可以用object这个语法结构来达到同样的目的
class JDBCUtil private (){
}
//懒汉模式
object JDBCUtil{
var instance:JDBCUtil = _
def apply(): JDBCUtil = {
if (instance == null){
instance = new JDBCUtil()
}
instance
}
}
尖叫提示:JDBCUtil类的主构造器设置为私有的,只能JDBCUtil的伴生对象能直接访问,伴生对象的名字必须和类的名字一样,才是类的伴生对象
apply的括号是不要省略的,如果省略,调用的时候,也必须省略,它用来标识调用的是哪个apply构造器,除了apply和unapply ,其他的函数括号是可以省略的,比如 getClass() ->getClass
2、JDBCUtilMain
object JDBCUtilMain {
def main(args: Array[String]): Unit = {
val jdbcUtil1 = JDBCUtil()
val jdbcUtil2 = JDBCUtil()
println(jdbcUtil1)
println(jdbcUtil2)
}
}
尖叫提示:对象的构造器在该对象第一次使用时,被调用。如果对象没有使用过,他的构造器也不会被执行,对象基本具有类的所有特性,甚至可以扩展,只有一个例外,不能设置构造器的参数。
转载于:https://www.jianshu.com/p/64a3cf3c276c