Carregando manipuladores de eventos genéricos no Scala
Se eu definir o seguinte manipulador de eventos genérico
trait Handles[E <: Event] {
def handle(event: E)
}
com tipo de evento como este
trait Event {
}
class InventoryItemDeactivated(val id: UUID) extends Event;
class InventoryItemCreated(val id: UUID, val name: String) extends Event;
como faço uma classe única que implementa manipuladores de eventos para cada um desses eventos? Eu tentei
class InventoryListView extends Handles[InventoryItemCreated] with Handles[InventoryItemDeactivated] {
def handle(event: InventoryItemCreated) = {
}
def handle(event: InventoryItemDeactivated) = {
}
}
mas Scala reclama que uma característica não pode ser herdada duas veze
Eu achei istorespond, que sugere uma solução, mas exige várias classes (uma para cada manipulador). Essa é realmente a única maneira ou existe algum outro construto Scala que eu possa usar para fazer uma única classe implementar vários manipuladores de eventos genéricos (ou seja, usar classes de caso, manifestos ou algum outro construto sofisticado