《游戏编程模式》 读书笔记 事件队列

        事件队列基本上可以看作一个“异步”的观察者模式:小王发出请求,小李关心并且对请求进行处理,唯一的不同是,在观察者模式中,所谓的“发出请求”就是小王直接去调用小李注册在他这里的函数,敦促小李立刻执行这一事情。而在事件队列这一模式中,小王并不直接调用函数,只是把这么一个请求发到队列之中,让小李自由处理,他可以压根儿不处理,他也可以把好些请求批量处理,这极大地增加了小李处理问题的自由度。

        使用这一设计模式,就是为了解决处理请求自由度的问题。我建议使用的情景是某一个种类的请求会从各处涌入,但是具体的执行方法要由处理这一请求的人决定。比如同一帧会有很多播放音频请求,但是一起播放出来就会吵闹不堪,这时需要音频播放者决定哪些优先级较低的音频不播放,或者哪些播放同一个音频的请求可以合并,这种时候使用事件队列就给了音频播放者处理请求的自由。其他情况下使用这样的异步很可能是不如同步的,尤其是在复杂逻辑中,想象一下,A函数的调用是因为B事件,B事件是C函数扔进队列的,C函数的调用是因为D事件,D事件又是E函数扔进队列的...没有调用栈的帮助,每一次确认事件的来源都是一次折磨。我的建议是最好是单向的队列,即哪些人朝哪些人发送事件是确定的,处理事件不会再朝这个事件队列里面塞入事件,并且确定这些事件的处理有异步的必要:不愿意或不能立刻处理。这种情况下使用事件队列才是不错的选择。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值