C#设计模式——装饰者模式
2021-04-08 00:25
标签:ide 辅助 子类 ddp 附加 tor 带来 原则 动态 一、装饰者模式介绍: 装饰者模式——以对客户透明的方式动态地给一个对象添加额外的职责,采用对象组合而非继承的方式实现了再运行时动态地扩展对象功能的能力,相比生成子类可以更灵活地增加功能,而且可以根据需要扩展多个功能,避免了单独使用继承带来的灵活性差和多子类衍生问题。同时它很好地符合面向对象设计原则中 ”优先使用对象组合而非继承“和”开放-封闭“原则。 二、背景: 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给笔记本添加贴膜,笔记本外设键盘,辅助扇热风扇等,如果此时利用继承来实现的话,就需要定义无数的类,如贴膜笔记本类StickerNoteBook、笔记本外设类PeripheralsNoteBook等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,装饰者模式出现了。 三、装饰者模式中的各个角色: 三、相关代码: 1、抽象构件(NoteBook)角色 2、具体构件(AppNotebook)角色 3、装饰(Dicorator)角色 4、具体装饰(Sticker和Peripherals)角色 5、调用 如果需要添加辅助扇热风扇时,此时只需要添加一个继承Decorator的辅助扇热风扇类,从而,装饰者模式扩展性也非常好。 四、使用场景: 五、总结: 优点: 缺点: C#设计模式——装饰者模式 标签:ide 辅助 子类 ddp 附加 tor 带来 原则 动态 原文地址:https://www.cnblogs.com/jiechou/p/9097866.html
///
///
///
///
///
static void Main(string[] args)
{
//创建联想笔记本对象
NoteBook notebook = new LenovoNoteBook();
//扩展贴膜行为
Decorator lenovowithsticker = new Sticker(notebook);
lenovowithsticker.SayHello();
Console.WriteLine("=======================");
//扩展增加外设行为
Decorator lenovowithperipherals = new Peripherals(notebook);
lenovowithperipherals.SayHello();
Console.WriteLine("=======================");
//同时扩展贴膜和增加外设行为
Sticker sticker = new Sticker(notebook);
Peripherals peripherals = new Peripherals(sticker);
peripherals.SayHello();
Console.ReadKey();
}