我刚开始尝试使用Scala。我有足够的信心开始重构我正在进行大约一年半的持续多线程应用程序。
然而,某些事情让我感到烦恼,我无法以某种方式弄明白,是如何揭露一个Actor的接口/契约/ protocole?在OO模式中,如果需要,我有同步方法的公共接口,我知道我可以用该对象做什么。现在我要使用演员,似乎所有这些都不再可用了。
更具体地说,我在我的应用程序中使用KbService,其中包含一组使用该Kb的方法。我想让它成为一个独立的演员。为此,我需要将所有方法设为私有或受保护,因为现在它们将仅由我接收的方法调用。因此,暴露可用行为的集合。
是否有一些最佳实践?
答案 0 :(得分:4)
为了解决这个问题,我通常会公开一个Actor可以通过“协议”对象接收的消息集。
class TestActor extends Actor {
def receive = {
case Action1 => ???
case Action2 => ???
}
}
object TestActorProtocol {
case object Action1
case object Action2
}
因此,当您想要与TestActor通信时,您必须从其协议对象发送一条消息。
import example.TestActorProtocol._
testActorRef ! TestActorProtocol.Action1
有时会变得沉重,但至少会有某种合约暴露出来。
希望有所帮助