Scala 在生活游戏中使用依赖注入注入新规则
我有一个课程项目,是Scala生活游戏的重构。这是一个 简单的纯Scala+SBT项目。我的任务之一是提取游戏逻辑 从Scala 在生活游戏中使用依赖注入注入新规则,scala,dependency-injection,Scala,Dependency Injection,我有一个课程项目,是Scala生活游戏的重构。这是一个 简单的纯Scala+SBT项目。我的任务之一是提取游戏逻辑 从GameEngine类,更容易添加新规则,如康威、Highlife或 诸如此类。我将GameEngine转换为一个抽象类,并制作了所有 从中继承的类实现了决定细胞何时死亡或死亡的方法 重生。当我的游戏开始时,我有以下代码: def addGameMode(gameMode:GameEngine) { modes += gameMode } addGameMode(Conwa
GameEngine
类,更容易添加新规则,如康威、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文件中声明,并由
外部库。他推荐了Spring
,但我不知道该如何实现
使用web框架的简单Scala+SBT项目中的依赖项注入。
希望我可以忽略这个建议,使用Spring
并使用另一个lib。
我找到了,但我不知道怎么用
解决这个问题。有人能帮我吗?你说你的DI实现是正确的。但如果我创建GameView的实例,我看不出会发生什么。程序将如何初始化游戏引擎和模式?如果其中一个还没有建造,会发生什么?顺便说一句,您也可以将Guice()视为DI框架。
gameEngine
的setter是不必要的,因为它已经是一个公共的var
,这意味着Scala可以方便地为您定义一个gameEngine
setter方法,您只需编写gameView.gameEngine=…
。(不,将其私有化并添加setGameEngine
方法不是Scala风格的好方法。)但我同意,仅仅将Spring用作DI框架可能没有意义。