Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在模拟场景中,将业务逻辑放在何处?_Java_Oop - Fatal编程技术网

Java 在模拟场景中,将业务逻辑放在何处?

Java 在模拟场景中,将业务逻辑放在何处?,java,oop,Java,Oop,我在模拟环境中有几个操作符。 操作员有位置、目标位置、任务和一些状态信息(例如,能级)。 模拟应执行模拟步骤并设置操作员的目标位置。 在每个模拟步骤中,操作员应向其目标位置移动,更新其状态信息,并可能更改其任务 现在我想知道这些更新逻辑应该放在哪里。 我应该使用操纵操作员状态的服务类,还是在操作员类中放置makeSimulationStep()方法? 一方面,第一种方法在某种程度上是一种贫乏的领域模型,但另一方面,第二种方法似乎将模拟相关的任务放在了操作符类中。这似乎更像游戏逻辑,但我将使用操作

我在模拟环境中有几个操作符。 操作员有位置、目标位置、任务和一些状态信息(例如,能级)。 模拟应执行模拟步骤并设置操作员的目标位置。 在每个模拟步骤中,操作员应向其目标位置移动,更新其状态信息,并可能更改其任务

现在我想知道这些更新逻辑应该放在哪里。 我应该使用操纵操作员状态的服务类,还是在操作员类中放置
makeSimulationStep()
方法?
一方面,第一种方法在某种程度上是一种贫乏的领域模型,但另一方面,第二种方法似乎将模拟相关的任务放在了操作符类中。

这似乎更像游戏逻辑,但我将使用操作符类提供有关操作符执行模拟步骤的信息,并在动画类中组合这些信息

大概是这样的:

while (inAnimationLoop) {    
    for (Operator operator : operators) {
        operator.updateSimulation();
        operator.drawPosition();
    }
}

是的,游戏逻辑可能是一个更合适的术语。该工具将用于监控任务的受控实验。但是,我认为
drawPosition()
方法违反了模型和gui之间的分离。我将使用观察者模式进行此操作。