// 题1. 网络游戏技能系统
// 某 RPG 游戏里,角色技能既有基础效果(如火球术、冰箭),又可以叠加各种修饰(如强化版、带毒、范围伤害)。
// 要求:
// 基础技能可独立存在。
// 可以在运行时动态地给技能添加修饰。
// 修饰的顺序会影响最终效果。
cspublic abstract class ISkill { public abstract void Execute(); } // 基础效果 public class FireBall : ISkill { public override void Execute() { Console.WrileLine("装备火球"); } } public class IceArrow : ISkill { public override void Execute() { if(skill != null) this.skill.Execute(); Console.WrileLine("装备冰箭"); } } public abstract class SkillDecorator : ISkill { public ISkill innerSkill; public PowerUpDecorator(ISkill skill) { this.skill = innerSkill; } public override void Execute() { innerSkill.Execute(); } } public class PowerUpDecorator : SkillDecorator { public PowerUpDecorator(ISkill skill):base(skill) { } public override void Execute() { base.Execute(); Console.WriteLine("能力提升"); } } public abstract class PoisonDecorator : SkillDecorator { public PoisonDecorator(ISkill skill) : base(skill) { } public override void Execute() { base.Execute(); Console.WrileLine("附毒"); } } public class AoEDecorator : SkillDecorator { public AoEDecorator(ISkill skill) : base(skill) { } public override void Execute() { base.Execute(); Console.WrileLine("造成范围伤害"); } } public class Client { public static void Main() { ISkill fireBall = new FireBall(); ISkill enhancedFireBall = new PowerUpDecorator(new PoisonDecorator(fireBall)); enhancedFireBall.Execute(); Console.WrileLine("_____________________________________"); ISkill iceArrow = new IceArrow(); ISkill aoeIceArrow = new AoEDecorator(new PowerUpDecorator(iceArrow)); aoeIceArrow.Execute(); } }
【设计模式】题目小练1
大飞pkz2025-09-13 15:06
相关推荐
冻柠檬飞冰走茶18 分钟前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)心若自由何处是束缚24 分钟前
适配器模式:从原理到实战的完整指南FRing0333 分钟前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))雪落漂泊38 分钟前
C++算法 二分查找篇(上)波力海苔夹心脆6752 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例不会算法的笨小孩2 小时前
异常的使用以及会出现的问题AI导出鸭PC端4 小时前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图是2的10次方啊4 小时前
设计模式与生活⑮:看到哪儿了,得有个地方替你记着Hhy_11074 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透starzy19904 小时前
深入理解Scala函数定义:从方法到函数的类型跨越