【发布时间】:2013-06-16 23:08:06
【问题描述】:
我对演员的想法比较陌生,我想知道是否可以对我的工作进行一些批评。对于项目的一部分,我需要一个演员来告诉一组正在听的演员时间。监听演员必须能够被添加到这个演员。
目前我有这个:
import akka.actor.Actor;
import akka.actor.ActorRef;
import com.github.nscala_time.time.Imports._;
class TimeManager extends Actor {
var actors:List[ActorRef] = List();
def receive = {
case AdvanceTime() => actors foreach (_ ! DateTime.now)
case AddListener(x) => actors = x :: actors
}
}
有什么方法可以从这段代码中删除状态(var 演员)以使其更具功能性?
【问题讨论】:
-
最佳做法是每个子演员只有一个父母。这意味着您应该避免将 Actor(以及任何可变对象)作为消息传递给其他 Actor。尝试将参与者系统构建为层次结构 - 这样可以更好地监督和控制系统。