Scala 如何通过组合其他对象创建API facade';API?

Scala 如何通过组合其他对象创建API facade';API?,scala,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 { ... } 显然,在tools中维护列表很烦人,因为ToolA、Too

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 { ... }
显然,在
tools
中维护列表很烦人,因为
ToolA
ToolB
ToolC
中的方法变化很大。A/B/C中没有状态,也没有设置参数


“使
工具
包含
工具A
工具B
工具C
中的所有方法集”的方法是什么

将工具A、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

谢谢这正是我所怀疑的:重复使用“with trait”有一些语法!Java ism不起作用,例如用A、B、C扩展了Foo,Scala中的
trait
s的扩展功能非常强大。您至少应该知道,traits并不局限于定义纯抽象类型(没有实现)。事实上,他们可以自由地混合抽象(未实现)和具体(实现)的值和方法。它们最大的限制是没有构造函数参数。