2016-12-15 32 views
1

作为Akka的新手,我需要帮助您以简单的方式了解Props的优点。共同的OO风格对象创建有什么问题?道具为阿卡的演员创造带来了什么好处?

我所知道的是,这是遵循工厂模式,您将类和PROP中的属性发送到工厂,并为您创建演员。 [如我错了请纠正我]?

但我没有看到需要,我知道这是根本。这是我的困境。

你能帮我理解这可能是通过类比/代码?

回答

2

我发现创建actor的这种方式有两个好处。

第一个很简单:它为您提供了一个保证,当创建一个Actor对象时,它也在actor系统中正确注册(它必须有一个父actor来监督它,获取调度器推送的消息等)。所以你永远不会得到一个类型为Actor的对象,但实际上它存在于actor系统之外。

第二个是在actorOf(props: Props): ActorRef方法的定义可见:它实际上并不返回Actor,而是一个ActorRef(以及ActorRef不暴露到下面Actor的参考任一)。

这意味着你永远不会直接访问actor本身,也不能通过直接调用actor上的方法来绕过Akka API,而不是发送异步消息。如果你自己构建Actor,那么显然你可以直接访问演员,这使得通过破坏演员模型保证的方式来访问演员太容易了。

-1

我不认为也有任何优势。其实,它有助于我理解API。

为什么不喜欢这样的:

ActorRef actorA = system.getRefByCreateActor(ActorA.class, Props.create(......)); 

NoSender.tell(actorA, message);