java - 与 Akka Actor 特性混合与基类发生冲突

标签 java scala inheritance akka jmonkeyengine

我正在将 Akka 框架与 jMonkeyEngine (jME3) 一起用于我的小 scala/java 游戏。通过调整一些Akka dispatcher magic我设法在与 jME3 的主循环线程相同的线程中运行专用参与者。为了使 Actor 能够访问类 SimpleApplication 的 protected 变量(应该扩展该变量以使用 jME3 创建游戏),我认为创建一个继承 class SimpleApplication 并混合 trait Actor 的类会很巧妙。像这样的事情:

JmeActor extends SimpleApplication with Actor

问题在于 SimpleApplication 和 Actor 都有一个相互冲突的上下文变量。目前,我已将 SimpleApplication 的 context 变量重命名为 jmeContext 并重新编译了 jME3。结果工作得很好,但对我来说,这个设计似乎被破坏了,因为 jME3(甚至 Akka)的任何进一步版本都将要求我再次手动进行此重构。开发团队甚至有可能(尽管不太可能)进一步修改 SimpleApplication,从而使这种冲突避免技术变得更加困难。

有人能找到一个简单的解决方案吗?

最佳答案

我的直觉表明,将 Actor 实例与如此丰富的类(如游戏引擎的“主”类)紧密结合可能不是一个好的设计选择。我建议对 SimpleApplication 进行子类化,这样您需要的所有功能都可以通过公共(public)方法公开,然后只需在您的 Actor 中保留对该功能的引用即可;我的猜测是,您希望能够通过向 Actor 发送消息来影响游戏引擎,从而启用 Actor 。

关于java - 与 Akka Actor 特性混合与基类发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497128/

相关文章:

java - 如何使用 Java 8/lambda 执行嵌套的 'if' 语句?

scala - 构造更高级类型的 TypeTags

scala - 将 csv 转换为 RDD

Scala节点匹配案例

c++ - 如果子级覆盖另一个具有相同名称和不同签名的方法,则不会继承基类方法

c# - 将 asp.net c# webservice datetime 值转换为 android(Java) 中的 Date 对象

java - Eclipse jar 在项目类路径上发生冲突

java - Spring Boot Cucumber org.springframework.transaction.TransactionDefinition 错误

python - 继承和导入

language-agnostic - 为什么箭头在继承中上升?