// 题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
相关推荐
Nebula_g3 分钟前
云禾外卖补充—项目整体后端运行逻辑-对流程的更深层次理解程序猿乐锅32 分钟前
【从0-1学习Python | 第六篇】 Python 函数:定义、参数与返回值G018_star sky♬34 分钟前
java中的字符串常见方法熊猫钓鱼>_>36 分钟前
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-serialization JSON 适配银河技术2 小时前
从脚本到 Operator:用 Go 构建可靠的微服务自动扩缩容控制器GIS数据转换器4 小时前
地下空间综合管廊运营管理平台Wang's Blog9 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图砚底藏山河9 小时前
python量化:行情数据回溯今年下半年9 小时前
AI智能体项目实战记录(02):初始化 Python 项目Williamtym10 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真