装饰模式
1、我的个人理解,会根据不同时期有不同的理解
理解一:装饰模式给我的理解就是对一个对象进行层层包装,而每一次包装都是在上一层的基础上进行,而不是从然来没有进行任何包装的对像开始的
2、定义:动态的给一个对象添加一些额外的职责,就是增加功能来说,装饰模式比生成子类更为灵活。
3、以对人类进行装饰为例,具体代码如下:
1)创建人类
1 //人类 2 class person 3 { 4 public person() { } 5 private string name; 6 public person(string name) 7 { 8 this.name = name; 9 } 10 public virtual void Show() 11 { 12 Console.WriteLine("装扮的{0}",name); 13 } 14 }
2)用于装饰人类的类,他要去继承人类
1 class Finery : person 2 { 3 //将人类做为属性 4 protected person component; 5 //打扮 6 public void Decorate(person component) { 7 this.component = component; 8 } 9 //重写show方法 10 public override void Show() 11 { 12 if (component != null) { 13 component.Show(); 14 } 15 } 16 }
3)具体的装饰类,如裤子衣服等
1 //大T恤去继承这个类 2 class TShirts : Finery 3 { 4 //重写show方法的同时在里面对基类的show方法进行调用 5 public override void Show() 6 { 7 Console.WriteLine("T恤"); 8 base.Show(); 9 } 10 } 11 class BigTrouser : Finery 12 { 13 public override void Show() 14 { 15 Console.WriteLine("裤子"); 16 base.Show(); 17 } 18 }
4)客户端代码
1 //装饰模式:模拟人穿衣服 2 static void Main(string[] args) 3 { 4 //创建一个具体的人 5 person zhengwei = new person("郑为"); 6 //创建具体要装饰的服装 7 TShirts ts = new TShirts(); 8 BigTrouser bt = new BigTrouser(); 9 10 //进行装饰,先穿T恤,再穿裤子 11 ts.Decorate(zhengwei); 12 bt.Decorate(ts); 13 14 //展示装扮 15 bt.Show(); 16 Console.ReadLine(); 17 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!