欢迎光临散文网 会员登陆 & 注册

《游戏编程模式》笔记——观察者模式

2023-08-31 23:01 作者:黑白色的枫  | 我要投稿

观察者模式是一种行为型设计模式。

当被观察者发生特定的变化时,所有观察者都会收到通知并自动处理。

主要目的是解耦。

例如,角色升级时,我们可以直接在玩家身上的代码里去调用音频系统播放一个升级音效,调用UI系统显示升级界面,调用成就系统记录玩家等级等。

这么看,似乎也还行,也能满足目前的需求。若是再有需要升级时触发的,比如解锁新的功能,解锁新的任务,商店追加新的可购买道具,触发一个限时礼包等,我们又要在后面继续堆各个系统的调用代码。代码量上去后,改动起来可能就会牵一发而动全身。

使用观察者模式的话,只需要在玩家升级的时候去通知所有观察者告诉他们现在玩家的等级就行了。

我们可以在玩家的代码中添加一个升级事件,所有需要监听玩家是否升级的观察者都通过AddListener函数把自己的函数加进来,玩家升级后触发升级事件,所有的观察者都会开始做对应的处理。

如果被观察者是单例类,事件变量和添加删除监听的函数就可以不用 static 修饰。

观察者需要在自己生命周期开始的时候去监听事件,在生命周期结束的时候取消监听。

如此一来,便完成了一个简单的观察者模式。


参考

《游戏编程模式》

《游戏编程模式》笔记——观察者模式的评论 (共 条)

分享到微博请遵守国家法律