点击上方<font color=blue>亿元程序员</font>+关注和<font color=orange>★</font>星标
引言
大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
代码耦合严重?可能没用到观察者模式
今天我想和大家分享一下游戏开发中一个非常重要的设计模式——观察者模式。观察者模式是一种行为设计模式,它允许某个对象(称为主题)在状态发生变化时通知其他对象(称为观察者),从而保持它们之间的同步。在游戏开发中,观察者模式被广泛应用于实现动态交互、事件处理和游戏逻辑更新等方面。
本文源码和源工程在文末获取,小伙伴们自行前往。
什么是观察者模式?
首先,让我们来了解一下观察者模式的基本概念和组成部分。观察者模式包含两个主要角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它可以注册、注销和通知观察者。观察者则是接收主题通知并作出相应操作的类或对象。
在游戏开发中,主题可以是游戏中的任何实体或组件,比如玩家控制的角色、游戏中的敌人、道具等等。当这些主题的状态发生变化时,比如角色移动、敌人受到伤害、道具被使用等等,它们会通知相应的观察者进行相应的操作。
观察者模式的核心在于主题与观察者的解耦。主题不需要知道有哪些观察者,也不关心它们的具体实现。同样地,观察者也不需要知道是哪个主题发生了变化,只需要关注自己感兴趣的事件。这种松耦合的设计使得系统的扩展性和可维护性都得到了提高。
通过例子理解观察者模式
接下来,让我们来看一个实际的游戏开发例子。假设我们正在开发一款游戏,有三个小动物,当我们按下空格键的时候,随机一个小动物进行攻击。
可能你会这么写
首先创建三个小动物,并排站。还是用到了我们手敲的FrameAnim
帧动画组件,反复使用,造轮子的感觉真好。
然后通过空格键控制产生一个随机数,使对应的小动物进行攻击。
上面没有使用观察者模式,直接让客户端和三只小动物耦合,当需要修改或扩展系统时,可能需要对多个类进行修改。
使用观察者模式
1.主题
首先我们创建一个Subject
主题类,拥有一些重要的状态,并在状态发生变化时通知观察者。其中包括主题的状态state
和订阅者列表observers
。
然后是添加订阅和删除订阅的方法。
还有通知方法和业务逻辑。
2.观察者
创建一个Observer
类,对由它们所附加的主题发布的更新做出反应。
3.测试代码
创建一个主题,同时创建三只小动物并创建对应的观察者,添加到主题的订阅者列表当中。
通过主题的业务逻辑去控制小动物进行攻击。
4.结果演示
和上面不使用观察者模式的结果是一致的。
总结一下,观察者模式是游戏开发中非常常用的一种设计模式,它可以实现主题与观察者的解耦,使得系统更加灵活和可扩展。通过使用观察者模式,我们可以实现动态交互、事件处理和游戏逻辑更新等功能。
希望这篇文章对大家有所启发,谢谢阅读!
结语
在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
关注我,发送"观察者模式"获取源码和源工程。
点击下方<font color=green>绿色按钮</font>+关注
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。