Прямо сейчас я пишу много кода, как в следующем примере, но методы 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))
}