欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【C#设计模式(10)——装饰器模式(Decorator Pattern)】

【C#设计模式(10)——装饰器模式(Decorator Pattern)】

2025/12/17 5:46:30 来源:https://blog.csdn.net/weixin_43626218/article/details/143782717  浏览:    关键词:【C#设计模式(10)——装饰器模式(Decorator Pattern)】

前言

装饰器模式可以在运行时为对象添加额外的功,而无需修改原始对象的代码。这种方式比继承更加灵活。

代码

//蛋糕类(抽象类)
public abstract class Cake
{public  abstract void Create();
}
//奶油蛋糕类
public class CreamCake : Cake
{public override void Create(){Console.WriteLine("制作奶油蛋糕...");}
}
//蛋糕装饰器类(抽象类)
public abstract class CakeDecorator : Cake
{protected Cake cake;protected CakeDecorator(Cake cake){this.cake = cake;}public override void Create(){cake.Create();}
}
//草莓装饰器类
public class StrawberryDecorator : CakeDecorator
{public StrawberryDecorator(Cake cake) : base(cake){}public override void Create(){base.Create();AddDecorator();}public void AddDecorator(){Console.WriteLine("给蛋糕添加草莓..");}
}
//芒果装饰器类
public class MangoDecorator : CakeDecorator
{public MangoDecorator(Cake cake) : base(cake){}public override void Create(){base.Create();AddDecorator();}public void AddDecorator(){Console.WriteLine("给蛋糕添加芒果..");}
}/** 结构模型:Structural Pattern* 装饰器模式:Decorator Pattern*/internal class Program{static void Main(string[] args){//制作奶油蛋糕Cake creamCake = new CreamCake();//给奶油蛋糕 + 草莓=>草莓奶油蛋糕CakeDecorator strawberryDecorator = new StrawberryDecorator(creamCake);//给草莓奶油蛋糕 + 芒果 => 草莓奶油 芒果 蛋糕 CakeDecorator mangoDecorator = new MangoDecorator(strawberryDecorator);//制作完成mangoDecorator.Create();Console.ReadLine();}}

运行结果

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词