混合与Akka演员特质冲突与基类

时间:2013-05-11 12:34:01

标签: java scala inheritance akka jmonkeyengine

我正在使用Akka框架和jMonkeyEngine(jME3)进行我的小scala / java游戏。通过调整一些Akka dispatcher magic我设法在与jME3的主循环线程相同的线程中运行一个专用的actor。为了让actor能够访问类SimpleApplication的受保护变量,应该扩展它以创建一个带有jME3的游戏,我认为创建一个可以继承类SimpleApplication 并混入的类是很好的em>特质演员。像这样:

JmeActor extends SimpleApplication with Actor

问题是SimpleApplication和Actor都有一个碰撞在一起的 context 变量。目前,我已将SimpleApplication的 context 变量重命名为 jmeContext 并重新编译了jME3。结果很好,但是设计似乎对我来说很糟糕,因为任何进一步发布的jME3(或者甚至是Akka)都需要我再次手动重新进行这种重构。甚至可能,尽管可能不太可能,开发团队会进一步修改SimpleApplication,使这种冲突避免技术变得更加困难。

任何人都可以看到一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我的直觉表明,与游戏引擎的“主要”类这样丰富的类密切相关的Actor实例可能不是一个好的设计选择。我建议继承SimpleApplication子类,这样你需要的所有功能都由公共方法公开,然后在你的actor中保持对它的引用;我的猜测是你希望能够通过向演员发送消息来影响游戏引擎,因此可以启用。