装饰器模式
详细见:https://www.runoob.com/design-pattern/decorator-pattern.html
什么是装饰器模式??
- 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。
- 说人话:我原本的类不想改,但是我还想添加额外的功能
- 实现思想:套娃
主要解决了什么问题?
- 避免通过继承引入静态特征,特别是在子类数量急剧膨胀的情况下。
- 允许在运行时动态地添加或修改对象的功能。
:::color4
使用建议:
- 在需要动态扩展功能时,考虑使用装饰器模式。
- 保持装饰者和具体组件的接口一致,以确保灵活性。
:::
具体实现

下面以简单的附魔系统演示代码
1 | public interface IWeapon |
1 | /// <summary> |
1 | public class FireEnchantment : WeaponDecorator |
1 | private void Start() |
| 执行顺序 | 执行的方法 | 输出内容 | 说明 |
|---|---|---|---|
| 1 | IceEnchantment.Attack() → base.Attack() | - | 进入最外层装饰器,先调用被包装对象 |
| 2 | FireEnchantment.Attack() → base.Attack() | - | 进入第一层装饰器,先调用被包装对象 |
| 3 | Sword.Attack() | 挥剑攻击! | 执行核心对象功能,输出第一行 |
| 4 | FireEnchantment.Attack () 后续代码 | 附加火焰效果! | 回溯执行第一层装饰器额外功能,输出第二行 |
| 5 | IceEnchantment.Attack () 后续代码 | 附加冰冻效果! | 回溯执行最外层装饰器额外功能,输出第三行 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 游戏开发笔记!
评论
