在游戏开发中,23种设计模式并不是每一种都会经常用到。实际使用频率取决于项目规模、开发阶段、团队习惯、引擎特性(如Unity、Unreal)、以及目标平台。我们可以从以下几个维度来分析:游戏开发阶段(初期架构、中期功能实现、后期优化与维护),并结合每个阶段的重点来评估哪些模式常用,哪些相对较少使用。


🌱 一、游戏初期架构设计阶段(基础架构、解耦、灵活性)

常用设计模式:

模式

原因与作用

单例模式 Singleton

管理全局唯一对象,如游戏管理器、音频管理器、配置管理器

工厂模式 Factory / 抽象工厂模式 Abstract Factory

用于生成游戏对象、UI元素、技能、武器等,支持扩展

策略模式 Strategy

封装 AI、移动方式、攻击方式等可替换行为

观察者模式 Observer

实现事件系统、状态通知(比如玩家死亡通知 UI、AI 等)

命令模式 Command

封装输入操作(撤销/重做系统、快捷键命令、技能释放)

组件模式(组合模式 Composite)

实现层级结构,如UI界面、装备系统(部件组合)

次常用模式:

模式

使用场景

建造者模式 Builder

创建复杂对象(如角色、怪物、关卡),但可能被ScriptableObject替代

状态模式 State

管理角色状态(移动、跳跃、攻击、死亡),适用于FSM实现

职责链模式 Chain of Responsibility

游戏中的碰撞处理、输入传递链条


⚙️ 二、功能开发与实现阶段(AI系统、UI系统、战斗系统、资源管理)

常用设计模式:

模式

原因与作用

状态模式 State

AI状态机、角色状态切换,维护行为逻辑清晰

观察者模式 Observer

UI响应游戏状态更新、任务系统监听事件

命令模式 Command

封装操作、撤销、宏命令、技能队列

策略模式 Strategy

AI行为、技能计算、UI布局策略

享元模式 Flyweight

优化资源使用(粒子、子弹对象共享内存)

原型模式 Prototype

用于对象克隆,节省实例化开销(如ScriptableObject.clone)

次常用模式:

模式

使用场景

备忘录模式 Memento

用于保存游戏状态(如存档系统)

装饰器模式 Decorator

动态增加游戏对象行为(如角色Buff系统)

桥接模式 Bridge

解耦抽象与实现(如分离UI逻辑与显示)


🧰 三、后期优化与维护阶段(性能优化、系统扩展、热更新)

常用设计模式:

模式

原因与作用

享元模式 Flyweight

大量重复对象共享数据(如地图Tile、子弹)

代理模式 Proxy

远程调用、资源延迟加载、网络通信(如热更新资源代理)

责任链模式 Chain of Responsibility

模块扩展易于维护(如输入系统)

观察者模式 Observer

拓展响应机制,不破坏原有逻辑


🚫 较少使用的设计模式(在游戏中不常见)

这些模式虽然在企业应用中有价值,但在游戏项目中使用频率较低:

模式

理由

解释器模式 Interpreter

用于解析语言或规则,适合自定义脚本系统,游戏中较少出现

中介者模式 Mediator

复杂UI组件交互可能使用,但难以维护和调试,不推荐频繁使用

访问者模式 Visitor

多用于结构稳定、操作频繁的系统(如编译器),游戏中不常用

模板方法模式 Template Method

被策略模式替代更灵活

迭代器模式 Iterator

编程语言已提供原生迭代器,不常显式实现

适配器模式 Adapter

游戏中库或平台对接可能用到,但非高频


🧠 总结分类图谱:

🚀 高频使用(非常重要):

  • 单例

  • 策略

  • 观察者

  • 命令

  • 状态

  • 工厂(抽象工厂)

🔧 中频使用(有一定用途):

  • 建造者

  • 职责链

  • 原型

  • 享元

  • 装饰器

  • 代理

🧊 低频使用(特定需求下):

  • 访问者

  • 解释器

  • 中介者

  • 迭代器

  • 模板方法

  • 适配器

  • 桥接