我正在为类成员搜索private
之类的封装方法。我希望演员提供接受一些常见的无害信息和特权,这可能会以不合需要的方式改变状态。我还可以构建代理actor,根据访问策略过滤消息。但是这两个演员仍然可以通过完整路径演员参考。我怎样才能使一些actor引用私有,只能由其父进程访问?
答案 0 :(得分:3)
只要使用ActorSelection
知道路径,任何其他actor都可以寻址任何actor。
如果您想限制某些消息,可以使用package-private。
之类的内容假设你有DangerousActor
并且你只希望在同一个套餐中定义的演员能够发送DangerousMessage
,但你也有SafeMessage
并且你对其他任何人都没问题演员系统发送的。
package dangerous
object DangerousActor {
private[dangerous] case object DangerousMessage
case object SafeMessage
}
case DangerousActor extends Actor {
import DangerousActor._
def receive = {
case DangerousMessage =>
case SafeMessage =>
}
}
只有dangerous
包中定义的演员才能引用DangerousMessage
。