Ich habe eine Eigenschaft, die die folgenden:Abstracting Allgemeines Verhalten mit Traits in Scala
trait MyTrait[T] {
def doSomething(elems: Seq[T])
}
ich dann eine Fabrik haben, die Instanzen der Implementierungen dieses Merkmals schaffen würde:
object MyTrait {
def apply(): MyTrait = {
new StringTrait()
}
}
Jetzt Die konkrete Implementierung sieht so aus:
class StringTrait extends MyTrait[String] {
def doSomething(elems: Seq[String]) = {
// some generic logic here
// some specific logic here (this code bit depends on the type of implementation)
// some generic logic here
}
}
Wie könnte ich jetzt StringTrait so machen, dass ich reinkomme spezifisches Verhalten von ihm und die generische Logik in einer abstrakten Klasse definiert? Eine Möglichkeit wäre, das Verhalten als Thunk zu übergeben, aber das bedeutet, dass ich meine doSomething (...) -Methode ändern muss, um einen zusätzlichen Parameter zu nehmen, den ich lieber vermeiden würde.