Java Spring框架-创建游戏规则引擎的设计模式

Java Spring框架-创建游戏规则引擎的设计模式,java,spring,design-patterns,dependency-injection,game-engine,Java,Spring,Design Patterns,Dependency Injection,Game Engine,我正在寻找一种设计模式或一种使用spring框架的方法,它将允许我根据游戏难度制定一套规则或指令。我会将它们放在spring配置中并使用概要文件,但问题是它们需要在运行时定义。感谢您的帮助 问题是我一直在下面传递这个上下文对象: public class Game { private MapMaker mapmaker; @Autowired public(MapMaker mapmaker){ this.mapmaker = mapmaker

我正在寻找一种设计模式或一种使用spring框架的方法,它将允许我根据游戏难度制定一套规则或指令。我会将它们放在spring配置中并使用概要文件,但问题是它们需要在运行时定义。感谢您的帮助

问题是我一直在下面传递这个上下文对象:

public class Game {

     private MapMaker mapmaker;

     @Autowired
     public(MapMaker mapmaker){
         this.mapmaker = mapmaker;
     }

     public void createGame(DifficulyLevel level){
          Boss myBoss = getBoss(difficultyLevel);   
          BossWeapon = getBossWeapon(difficultyLevel);
          MapInstructions mapInstructions = getMapConstructionInstructions(diffcultyLevel); 
          mapmaker.makemap(mapInstructions);      
     }

}

Easyrules框架非常简单有效,您可以非常轻松地与spring集成。由于它是基于when/then的框架,我认为它将帮助您实现目标

@Rule(name = "dummy rule")
public class DummyRule {

    @Condition
    public boolean when() {
        return true;
    }

    @Action
    public void then(){
        System.out.println("Hey, I'm managed by Spring");
    }
}

Ref:

我喜欢这个想法,但是存储配置的好方法是什么?类似的问题是,如果您以某种方式(如映射)加载配置,这仍然会成为一种气味。不确定如何处理加载配置。比如说地图是通过@Configuration或其他方式加载的。基本上,我只是在寻找一种策略/干净的方式来加载配置,因为我喜欢这个解决方案。因为难度取决于用户,所以您可以为不同的难度创建不同的规则类,并在主类中使用它们。只是一个想法,建议你仔细思考。你会想出解决办法的。