在生命游戏中使用依赖注入来注入新规则

时间:2017-10-29 21:08:18

标签: scala dependency-injection

我有一个课程项目,是Scala中生命游戏的重构。它是 简单纯粹的Scala + SBT项目。我的任务之一是提取游戏逻辑 来自GameEngine课程,并且更容易添加新规则,如Conway,Highlife或 这样的事情。我把GameEngine变成了一个抽象类并且完成了所有 从它继承的类实现了决定何时应该死亡的方法 重生。当我的游戏开始时,我有这个代码:

def addGameMode(gameMode:GameEngine) {
  modes += gameMode
}

addGameMode(ConwayEngine)
addGameMode(EasyMode)
addGameMode(HighLife)
addGameMode(Seeds)

我的依赖于GameEngine规则的类将其视为一个 构造参数。当我需要更改游戏规则时,我会使用setter方法 以下代码:

class GameView( var gameEngine: GameEngine, modes: MutableList[GameEngine] ) extends JFXApp {
...
  def setGameEngine(g: GameEngine) {
    gameEngine = g
  }
...
}

我不知道这种方法是否正确,但从我所学到的,依赖性 注射是正确的。但是,对我的老师来说,事实并非如此。我的问题就开始了。 根据他的说法,依赖项应该在.xml文件中声明并进行处理 一个外部的lib。他建议Spring,但我不知道应该如何实施 使用Web框架在简单的Scala + SBT项目中注入依赖项。 希望我可以忽略这个建议使用Spring并使用另一个lib。 我发现MacWire但我不知道如何使用它 解决这个问题。有人能帮助我吗?

0 个答案:

没有答案