比方说,我有DAO演员(CassDaoActor,VerticaDaoActor等)来响应消息“读”。
首先,是否有一种方法可以表达一个接口或抽象类,该接口或抽象类定义扩展参与者应该实现的“读”消息?
现在假设只有在运行时,我才能知道需要根据配置的数据库创建哪个Actor。例如,如果配置的db是cassandra,则需要创建CassDaoActor等。这显然是我们所知道的Factory Method Pattern的典型用例。我想了解我们如何实现这样的事情?显然,我们无法传递“上下文”,因为它会使内容失去参与者的作用范围。
请提出建议。
到目前为止,我一直在尝试根据配置的db将各自的道具返回给需要在其中创建这些actor的actor。
object `package` {
val CASS = "cass"
val VERTICA = "vertica"
def getDAOProps(db: String): Props = db match {
case CASS => CassDaoActor.props
case VERTICA => VerticaDaoActor.props
}
}
// SupervisorActor
val db = configuredDb()
context.actorOf(getDAOProps(db), db)