2
J'ai des événements dans mon modèle et une certaine logique de traitement. Je veux organiser la logique de communication jeter Acteurs. Mais comment je peux hériter la logique de manipulation sans spécifier act()
dans chaque classe concrèteComportement de gestion des messages hérités
exemple simplifié
class Event {}
case class FooEvent(str : String) extends Event
case class BarEvent(i : java.lang.Integer) extends Event
trait FooListener extends Actor {
def act() {
react{
case FooEvent => print("foo received")
}
}
}
trait BarListener extends Actor {
def act() {
react{
case BarEvent => print("bar received")
}
}
}
class ListensOnlyBar extends BarListener{}
//can't be done:
//error: overriding method act in trait FooListener of type()Unit;
//method act in trait BarListener of type()Unit needs `override' modifier
//class ListensBarAndFoo extends FooListener with BarListener{
class ListensBarAndFoo extends FooListener with BarListener{}
@Kipton Barros, C'est quoi la question. Y a-t-il un moyen de les combiner? –
@Kipton Barros, 'FooEvent's devrait être géré par' FooListener' et 'BarEvent's par' BarListener'. –
Je vois, puis tenshi a une bonne réponse. Ce que vous voulez n'est pas vraiment quelque chose qui peut être fait avec l'héritage. En passant, si vous mettez des modificateurs "override" sur vos méthodes 'act()', alors la linéarisation fera que la méthode 'act()' la plus à gauche (de 'FooListener') gagne dans la sous-classe (ListensBarAndFoo'). –