scala教程:伴生对象的应用场景:工厂模式

伴生对象应用场景

伴生对象可实现 java中的工厂方法模式,即:不能通过 类的构造器 创建对象,而是通过 某个方法来创建

  1. 将类的主构造器定义成 private

  2. 在 object对象中定义方法,通过该方法 创建类对象

例子

/*
将类的主构造器定义成private
在其他地方就不能通过构造器创建对象
 */
class Phone private(var cpu:String) {

  def call(num:String):Unit = {
    //通过名字访问伴生对象的属性。相当于java中访问静态属性
    println(s"用 ${Phone.name} - $cpu 给 $num 打电话")
    Phone.about() //通过名字访问伴生对象的方法。相当于java中调用静态方法
  }
}

object Phone {

  var name:String = "iphone15" //相当于java中的静态属性

  def about():Unit = { // 相当于java中的静态方法
    println("关于信息。。。")
  }

  /*
    通过该方法创建对象
   */
  def newInstance(cpu:String):Phone = return new Phone(cpu)
}

object test{
  def main(args: Array[String]): Unit = {
    //通过伴生对象的方法创建对象
    val phone:Phone =Phone.newInstance("A100")

    phone.call("110")

  }
}

原文出处:/show_1IX1DOpHwykc.html