首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态/模块化“事件”系统使用哪种设计模式?

动态/模块化“事件”系统使用哪种设计模式?
EN

Stack Overflow用户
提问于 2016-03-05 23:52:42
回答 1查看 99关注 0票数 0

我正在尝试为我正在制作的游戏创建一种事件系统(缺乏更好的定义)。我需要做的是,拥有一组(硬编码的) 'core‘函数,我可以以任意的方式将它们链接在一起,并将其定义为“事件”,然后我可以使用一些任意参数来执行这些函数。

如果这些事件是硬编码的,f.ex,这些“事件”就会相对简单。

代码语言:javascript
复制
hardcodedEvent(int this, int that){
    coreFunc1(this);
    coreFunc2(that);
    coreFunc3(coreFunc4(this + that));
    //etc...
}

但问题是,它们需要是动态的和模块化的,这样在理论上,您就能够以类似于流程图/图表的方式来构造和表示这些事件(例如: 3d软件的流程图编辑器)。

最后,我需要这些事件是可序列化的,这样我就可以将它们作为文件保存并加载到数据库中。

我看过回调、命令、观察者和状态机模式,但我不知道哪种模式最适合这种情况,而且我以前也没有对其中任何一种模式做过太多的工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-06 17:14:33

对我来说,您确切地想到了对您的问题有用的设计模式。这当然只是把它们结合在一起的问题。

如果我理解得很好的话,你是在玩一些游戏(混乱,信息交流,.)和一些保存/加载/日志逻辑(文件保存,数据库,.)在某个时候。

state :对于带有模块化状态的状态机行为,根据您的“流程图”描述,它似乎适合于游戏,但对于事件系统则不太适合。

观察者:对于发布/订阅逻辑(信息共享,.)

回调:对于松散耦合的日志系统(同步东西,日志到文件)

命令:对于将请求封装为对象,这里可能不太有用

我还想在清单上加上另外两条:

Decorator:因为您的游戏组件,事件似乎以模块化的方式是“可链接的”(即:将核心函数链接起来,使其更进化)

Builder:对于您想要从文件中加载游戏的部分,它可以爬行您的文件并在保存状态下重新创建游戏,封装了沉重的加载逻辑.

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35821376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档