单例模式案例

27 阅读1分钟

apply的基本使用

apply:作用:写在半生对象中,就可以允许创建对象的时候,省略new 在 Scala 中,apply 方法放在类的伴生对象(object)里,主要起到 工厂方法的作用,能够让使用者在创建该类实例时省去显式的 new 关键字,并且可以通过重载提供多种构造方式。 当写ClassName(arg1,arg2)时,编译器会自动翻译ClassName.apply(arg1,arg2),这可以让实例化代码更简单。


object Class10 {
  // 定义Logger类
  class Logger

  // Logger的伴生对象
  object Logger {
    // 伴生对象中的apply方法
    def apply(): Logger = {
      println("logger.....") // 打印日志
      new Logger()
    }
  }
    def main(args: Array[String]): Unit = {

      val log1 = Logger()
      val log2 = Logger()
      println(log1 == log2)
    }
  }
object Class10 {
  class Logger
  object Logger {
    private val instance = new Logger()

    def apply(): Logger = instance
  }
    def main(args: Array[String]): Unit = {
      val log1 = Logger()
      val log2 = Logger()
      println(log1 == log2)  // 此时输出true
    }
  }

apply实现单列模式

在代码中 isEmpty判断是否为空,Some()用来包装一个对象,如果这个对象为空,就得到None对象,否则就返回这个对象