定义多个特征的最佳实践,这些特征为实现特定特征的类添加行为

时间:2012-03-28 11:52:31

标签: scala traits

假设我有一些trait个,每个都会向扩展Actor的类添加一些行为。

它们每个都需要Actor上的一小部分方法。他们都可以像这样延长Actor吗?

trait A extends Actor {
  def doAThing = { ... }
}
trait B extends Actor {
  def doBThing = { ... }
}
trait C extends Actor {
  def doCThing = { ... }
}

class D extends Actor with A with B with C

或者每个特征是否应该将Actor所需的方法定义为抽象方法,以便它们由最终的具体类提供,这是唯一一个将扩展Actor的方法?

1 个答案:

答案 0 :(得分:6)

继承

trait A extends Actor

表示AActor。另一种方法是使用self-types

trait B {
  self: Actor =>
}

表示B需要混合Actor

有关详细信息,请参阅linked question