这里先举两个生活中的小栗子:
在软件设计中,类似上面的场景我们也可以把对象在不改变结构的情况下对其加工扩展修饰,使得对象具有更加强大的功能,这种技术在设计模式中就叫装饰模式。装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。
装饰模式:动态地给一个对象增加一些额外的职责。就扩展功能面言,装饰模式提供了—种比使用子类更加灵活的替代方案。
装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。
标准的装饰模式应该包含如下4个角色(也可根据实际情况定义):
public class Decorator : Person
{
private readonly Person _person;
public Decorator(Person person)
{
_person = person;
}
public override void Show()
{
if (_person != null)
{
_person.Show();
}
}
}
public class ConcernTshirt : Decorator
{
public ConcernTshirt(Person person) : base(person)
{
}
public override void Show()
{
base.Show();
Console.WriteLine("T恤");
Necktie();
}
private void Necktie()
{
Console.WriteLine("领带");
}
}
源代码仓库地址:https://github.com/luchong0813/DesignModel
原文:https://www.cnblogs.com/chonglu/p/14956368.html