【发布时间】:2018-02-18 10:25:16
【问题描述】:
如何正确地将许多依赖项(外部 API)传递给 Scala 中的类?
我正在开发使用许多 API 来收集数据的应用程序。对于 API,我有trait,如下所示。
trait api {
def url: Foo
def parse: Bar
}
此外,api 特征大约有 10 个实现(每个 API 一个)。在父演员内部,我想为每个外部 API 创建一个子演员。我创建了新的特征和实现,
trait ExternalApis {
val apiList: List[api]
}
object MyApis extends ExternalApis {
val apiList = List(new ApiImpl1, ..., new ApiImpl10)
}
所以现在我可以将MyApis 对象(或ExternalApis 的任何其他实现)传递给父actor,并映射到apiList 以创建此类子actor。
在我看来,我错过了一些东西。还有更合适的方法吗?
【问题讨论】:
-
我觉得不错。如果您需要更大的灵活性,您可以从配置文件或数据库中读取 api 实现列表,但这也会导致更高的复杂性。
-
我看到的唯一问题是:你怎么知道向哪个 API 实现发送消息?我不知道你的整个代码库,如果这看起来是一个愚蠢的问题,我很抱歉!
标签: scala dependency-injection dependencies