ActorContext(getContext()) 是否可以传递到Actor 外部来创建子

我想要一个如下所示的 ActorFactory 类


public class SampleActorFactory {

  // Simple create method

  public createActor(AbstractActor.ActorContext actorContext, Props props) {

     return actorContext.actorOf(props);

  }

 // other complex create methods

 ...

}

使用上面的工厂类创建一个儿童演员是否可以,或者这被认为是一种不好的做法?如果被认为是不好的做法,那为什么呢?


例如:


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();


    }

}


蝴蝶不菲
浏览 115回答 1
1回答

守着星空守着你

我认为这种方法没有任何问题,您应该能够访问 actor 系统之外的上下文。但是......通常要创建一个演员,你只需要如下一行代码。使用您的代码,您必须在创建演员的地方编写两行代码(一行用于道具,另一行用于调用您的 createActor() 方法)。除了实现工厂方法之外,如果您从中获得任何额外的好处,您就可以去做。ActorRef demoActor = getContext().system().actorOf(Props.create(MyDemoActor.class, prop1, prop2);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java