2
我在模型和一些處理邏輯中有一些事件。我想組織通信邏輯拋出演員。但我怎麼能繼承處理邏輯,無需在每個具體的類繼承消息處理行爲
簡單的例子
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,這是什麼問題。有什麼方法可以將它們結合起來嗎? –
@Kipton Barros,'FooEvent'應由'BarListener'由'FooListener'和'BarEvent'處理。 –
我明白了,那麼tenshi有個很好的答案。你想要的並不是那些可以通過繼承完成的事情。順便說一句,如果你在你的'act()'方法中放置了「override」修飾符,那麼線性化將使子類('ListensBarAndFoo')中最左邊的'act()'方法(來自'FooListener')獲勝。 –