Перегрузка универсальных обработчиков событий в Scala

Если я определю следующий общий обработчик событий

trait Handles[E <: Event] {
  def handle(event: E)
}

с типом события, как это

trait Event {

}
class InventoryItemDeactivated(val id: UUID) extends Event;

class InventoryItemCreated(val id: UUID, val name: String) extends Event;

Как мне сделать один класс, который реализует обработчики событий для каждого из этих событий? Я пытался:

class InventoryListView extends Handles[InventoryItemCreated] with Handles[InventoryItemDeactivated] {
    def handle(event: InventoryItemCreated) = {

    }

    def handle(event: InventoryItemDeactivated) = {

    }
  }

но Скала жалуется, что черта не может наследоваться дважды.

я нашел этоответ который намекает на решение, но требует нескольких классов (по одному для каждого обработчика). Действительно ли это единственный способ или есть какая-то другая конструкция Scala, которую я могу использовать, чтобы заставить один класс реализовывать несколько универсальных обработчиков событий (т. Е. Используя case-классы, манифесты или некоторые другие причудливые конструкции)?

Ответы на вопрос(2)

Ваш ответ на вопрос