原型模式是什么?
一句话:
通过”复制一个已存在的对象” 来创建新对象, 而不是重新 new 一个.
核心思想:
- 有一个原型对象
- 想要新对象, 直接克隆(Copy)它
- 不用重新配置\重新加载资源
在Unity里最典型的应用就是:
子弹\特效\小怪\技能副本 —— 本质就是克隆 Prefab
一 标准原型模式结构
- Prototypr(抽象原型): 定义克隆方法
- ConcretePrototype(具体原型): 实现克隆
- Client(客户端): 使用克隆创新对象
二 Unity 实战例子: 技能\子弹克隆
我们做一个可克隆的技能对象, 包含伤害\特效\冷却等, 直接复制而不是重新构造.
- 创建原型接口
定义克隆方法
- 具体原型: 技能类
- 在Unity中使用克隆
运行结果:
三 Unity 最真实用法: 克隆 GameObject
Unity 里原型模式的原生体现就是:
Instantiate(prefba)
他本质就是原型模式!
我们可以把上面改成真正 Unity 风格的原型模式:
- 可克隆的敌人原型
- 测试调用
这就是 Unity 开发者天天在用的原型模式.
四 浅拷贝 vs 深拷贝(重点)
浅拷贝(MemberwiseClone)
- 值类型直接复制
- 引用类型复制引用(共用同一个对象)
深拷贝
- 连引用类型的内容也一起复制
- 适合技能配置\角色数据等
简单的深拷贝实现:
五 原型模式什么时候用?
Unity 高频场景:
- 批量生成子弹\特效\怪物(Instantiate 本质就是原型)
- 需要大量相似对象, 不想反复初始化
- 对象创建成本高(配置复杂\加载慢)
- 需要动态复制当前状态(比如复制一个正在施法的角色)
六 一句话总结
原型模式 = 复制一个线程对象来创建新对象, 避免重复构造, Unity 的 Instantiate 就是最标准的原型模式.