Повторное использование конструкторов для реализации нескольких признаков - PullRequest
1 голос
/ 25 марта 2020

Прямо сейчас я пишу много кода, как в следующем примере, но методы apply почти совпадают, единственное, что меняется, - это результирующий класс. Можно ли использовать один и тот же метод apply для создания различных реализаций trait?

trait Base {
  def name: Option[String]
  def value: Int
}

case class AnImplementatation(override val name: Option[String]) extends Base {
  override def value: Int = name.map(_.length).getOrElse(0)
}

object AnImplementatation {
  def apply(name: String): AnImplementatation = AnImplementatation(Some(name))
}


case class AnotherImplementatation(override val name: Option[String]) extends Base {
  override def value: Int = name.map(_.length).getOrElse(0) * 2
}

object AnotherImplementatation {
  def apply(name: String): AnotherImplementatation = AnotherImplementatation(Some(name))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...