作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个 ActorFactory 类,如下所示
public class SampleActorFactory {
// Simple create method
public createActor(AbstractActor.ActorContext actorContext, Props props) {
return actorContext.actorOf(props);
}
// other complex create methods
...
}
使用上面的工厂类创建一个子 Actor 是否可以,或者这被认为是一种不好的做法?如果被认为是不好的做法,那么为什么?
例如:
public class SampleActor extends AbstractActor {
private final SampleActorFactory sampleActorFactory;
@Override
public Receive createReceive() {
return receiveBuilder()
.match(SampleData.class, sampleData -> {
Props sampleProps = getSampleProps(...);
ActorRef childActor = sampleActorFactory.createActor(getContext(), sampleProps);
})
.build();
}
}
最佳答案
我认为这种方法没有任何问题,您应该能够访问参与者系统之外的上下文。但是......通常要创建一个 Actor ,你只需要一行代码,如下所示。使用您的代码,您必须在创建 Actor 的位置编写两行代码(一行用于 Props,另一行用于调用 createActor() 方法)。除了实现工厂方法之外,如果您从中获得了任何额外的好处,您可以继续使用。
ActorRef demoActor = getContext().system().actorOf(Props.create(MyDemoActor.class, prop1, prop2);
关于java - ActorContext(getContext())可以在Actor外部传递来创建子actor吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349217/
我想要一个 ActorFactory 类,如下所示 public class SampleActorFactory { // Simple create method public creat
根据标题,从 Actor 中提取的 ActorContext 是否可以从多个线程(即使是 Actor 当前未执行的线程)中安全地使用,以创建旨在成为原始 Actor 的 child 的 Actor ?
我是一名优秀的程序员,十分优秀!