C# 装饰模式
// See https://aka.ms/new-console-template for more information /* * 个人理解 你要往原有的东西上加东西 Phone=装饰手机原材料 Decorator=装饰手机中间人 XiaoMi=具体装饰的手机 Sticker=装饰手机中间人拿装饰手机原材料来装饰XiaoMi。给它贴膜 */ //拿出小米手机 Phone phone1 = new XiaoMi(); Decorator xiaoMiSticker = new Sticker(phone1); xiaoMiSticker.Print(); Decorator xiaoMiAccessories = new Accessories(phone1); xiaoMiAccessories.Print(); /// <summary> /// 手机抽象类,即装饰者模式中的抽象组件类 /// </summary> public abstract class Phone { public abstract void Print(); } /// <summary> /// 装饰类 /// </summary> public abstract class Decorator : Phone { private Phone Phone; protected Decorator(Phone phone) { Phone = phone; } public override void Print() { if (Phone != null) Console.WriteLine("我是Decorator重写实现"); Phone?.Print(); } } /// <summary> /// 小米手机,即装饰着模式中的具体组件类 /// </summary> public class XiaoMi : Phone { /// <summary> /// 重写基类方法 /// </summary> public override void Print() { Console.WriteLine("开始执行具体对象-小米手机"); } } /// <summary> /// 苹果手机,即装饰着模式中的具体组件类 /// </summary> public class Iphone : Phone { public override void Print() { Console.WriteLine("开始执行具体对象-苹果手机"); } } public class Redmi : Phone { public override void Print() { Console.WriteLine("开始执行具体对象-红米手机"); } } /// <summary> /// 手机贴膜 /// </summary> public class Sticker : Decorator { public Sticker(Phone phone) : base(phone) { } public override void Print() { // base.Print(); Console.WriteLine("开始贴膜"); AddSticker(); } /// <summary> /// 新的行为方法 /// </summary> public void AddSticker() { Console.WriteLine("现在小米手机有贴膜了"); } } /// <summary> /// 手机挂件 /// </summary> public class Accessories : Decorator { public Accessories(Phone phone) : base(phone) { } public override void Print() { // base.Print(); Console.WriteLine("开始挂挂件"); AddSticker(); } /// <summary> /// 新的行为方法 /// </summary> public void AddSticker() { Console.WriteLine("现在小米手机有挂件了"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)