【问题标题】:Spring Framework - Design pattern to create a rules engine for gameSpring Framework - 为游戏创建规则引擎的设计模式
【发布时间】:2017-08-17 04:31:32
【问题描述】:

我正在寻找一种设计模式或一种使用 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);      
     }

}

【问题讨论】:

    标签: java spring design-patterns dependency-injection game-engine


    【解决方案1】:

    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");
        }
    }
    

    参考:http://www.easyrules.org/tutorials/spring-tutorial.html

    【讨论】:

    • 我喜欢这个想法,但是如何存储配置文件是个好方法?像问题一样,如果您以某种方式加载配置,例如 Map Map Map 这仍然会变成一种气味。不知道如何处理加载配置。就像说地图是通过@Configuration 或其他方式加载的。基本上只是在寻找一种策略/干净的方式来加载配置,因为我喜欢这个解决方案。
    • 由于难度级别取决于用户,您可以为不同的难度级别创建不同的规则类并在主类中使用它们。只是一个想法,建议你仔细考虑。你会想出一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2012-05-22
    • 2016-08-08
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    相关资源
    最近更新 更多