如何通过组合其他对象的API来创建API外观?

时间:2013-02-16 00:16:39

标签: scala

我在Scala中有许多无状态对象,我想将它们组合成一个API - 一种外观如下:

object tools {
   // List all methods in toolA

   // List all methods in toolB

   // List all methods in toolC

}
object ToolA { ... }
object ToolB { ... }
object ToolC { ... }

显然,由于toolsToolAToolB中的方法发生了很大变化,因此在ToolC中维护列表很烦人。 A / B / C中没有状态且没有设置参数。

有什么方法可以说... “make tools包含ToolAToolBToolC中所有方法的集合”

1 个答案:

答案 0 :(得分:6)

将ToolA,B和C定义为特征

trait ToolA {
    //stateless methods in ToolA
}

然后你可以做

object tools extends ToolA with ToolB with ToolC

您还可以只为ToolA,ToolB和ToolC

设置辅助对象
object toolA extends ToolA
object toolB extends ToolB
object toolC extends ToolC