我想要一個如下所示的 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(); }}
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
我認為這種方法沒有任何問題,您應該能夠訪問 actor 系統之外的上下文。但是......通常要創建一個演員,你只需要如下一行代碼。使用您的代碼,您必須在創建演員的地方編寫兩行代碼(一行用于道具,另一行用于調用您的 createActor() 方法)。除了實現工廠方法之外,如果您從中獲得任何額外的好處,您就可以去做。
ActorRef demoActor = getContext().system().actorOf(Props.create(MyDemoActor.class, prop1, prop2);
添加回答
舉報
0/150
提交
取消