面临问题
游戏开发中我们常常会遇到一个问题就是测试环境下配置文件与生产环境配置文件不一致,当然最常用的就是在maven中指定不同的profiles然后分别打包,但是在游戏上线后这种方式就不太灵活,例如游戏上线后需要在特殊节日增加了一些新活动,但这种游戏逻辑已经内嵌至代码中,不必修改,往往只需要改几个配置就够了,同时本地开发是windows,osx,生产环境又是linux,加载路径也是千奇百怪,那么对于这种需求我们应当如何解决呢?
功能设计
-
区分开发,测试,生产环境
这一点很容易理解,即划分好各环境沙箱,使其相互之间没有干扰,最简单易行就是使用spring中PropertyPlaceholderConfigurer来解决各配置的差异,同样你可以使用当然你也可以使用Spring Bean definition profiles,但这个功能支持需要使用spring 3.1以上版本. -
提供统一的文件访问接口
文件的使用者不应该把重点放在如何加载配置文件上,而是直接将文件封装成他需要的对象,这样我们就需要一个能解析各种文件的工具类 -
基于事件机制的加载触发
配置文件加载不应该是显示的调用,而应该是基于事件机制,当在消息总线中抛出一个事件,那么各模块的配置文件加载器需要知道此时是否需要加载配置,而不用关心当前游戏服务器的状态.