作为Akka的新手,我需要帮助您以简单的方式了解Props的优点。共同的OO风格对象创建有什么问题?道具为阿卡的演员创造带来了什么好处?
我所知道的是,这是遵循工厂模式,您将类和PROP中的属性发送到工厂,并为您创建演员。 [如我错了请纠正我]?
但我没有看到需要,我知道这是根本。这是我的困境。
你能帮我理解这可能是通过类比/代码?
作为Akka的新手,我需要帮助您以简单的方式了解Props的优点。共同的OO风格对象创建有什么问题?道具为阿卡的演员创造带来了什么好处?
我所知道的是,这是遵循工厂模式,您将类和PROP中的属性发送到工厂,并为您创建演员。 [如我错了请纠正我]?
但我没有看到需要,我知道这是根本。这是我的困境。
你能帮我理解这可能是通过类比/代码?
我发现创建actor的这种方式有两个好处。
第一个很简单:它为您提供了一个保证,当创建一个Actor
对象时,它也在actor系统中正确注册(它必须有一个父actor来监督它,获取调度器推送的消息等)。所以你永远不会得到一个类型为Actor
的对象,但实际上它存在于actor系统之外。
第二个是在actorOf(props: Props): ActorRef
方法的定义可见:它实际上并不返回Actor
,而是一个ActorRef
(以及ActorRef
不暴露到下面Actor
的参考任一)。
这意味着你永远不会直接访问actor本身,也不能通过直接调用actor上的方法来绕过Akka API,而不是发送异步消息。如果你自己构建Actor
,那么显然你可以直接访问演员,这使得通过破坏演员模型保证的方式来访问演员太容易了。
我不认为也有任何优势。其实,它有助于我理解API。
为什么不喜欢这样的:
ActorRef actorA = system.getRefByCreateActor(ActorA.class, Props.create(......));
NoSender.tell(actorA, message);