如何实施阿卡族演员工厂?

时间:2019-05-18 20:52:39

标签: scala akka

比方说,我有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)

0 个答案:

没有答案