/// <summary>
/// 被称之为结构型设计模式的巅峰之作
/// 组合+继承的融合应用
///
/// 能够任意扩展要求 还能调整顺序
/// </summary>
public class Program
{
public static void Show()
{
{
AbstractStudent student = new StudentVip()
{
Id = 123,
Name = "小瓶子"
};
student = new StudentDecoratorHomework(student);
student = new StudentDecoratorVideo(student);//包一层
student = new StudentDecoratorAnswer(student);
student.Study();
}
}
}
public abstract class AbstractStudent// : Object
{
public int Id { get; set; }
public string Name { get; set; }
public abstract void Study();
}
/// <summary>
/// 装饰器 is a 学生
/// 组合+继承
/// abstract是为了避免外部直接实例化
/// </summary>
public class AbstractDecorator : AbstractStudent
{
private AbstractStudent _Student = null;
public AbstractDecorator(AbstractStudent student) : base()
{
this._Student = student;
}
public override void Study()
{
this._Student.Study();
}
}
/// <summary>
/// 装饰器 is a 学生
/// 组合+继承
/// </summary>
public class StudentDecoratorAnswer : AbstractDecorator
{
public StudentDecoratorAnswer(AbstractStudent student) : base(student)
{
}
public override void Study()
{
base.Study();
Console.WriteLine("获取在线答疑。。。");
}
}
/// <summary>
/// 装饰器 is a 学生
/// 组合+继承
/// </summary>
public class StudentDecoratorHomework : AbstractDecorator
{
public StudentDecoratorHomework(AbstractStudent student) : base(student)
{
}
public override void Study()
{
base.Study();
Console.WriteLine("获取作业巩固。。。");
}
}
/// <summary>
/// 装饰器 is a 学生
/// 组合+继承
/// </summary>
public class StudentDecoratorVideo : AbstractDecorator
{
public StudentDecoratorVideo(AbstractStudent student) : base(student)
{
}
public override void Study()
{
base.Study();
Console.WriteLine("获取视频代码。。。");
}
}
(精华)2020年8月13日 C#基础知识点 23种设计模式(结构型模式---装饰器模式)
猜你喜欢
转载自blog.csdn.net/aa2528877987/article/details/107982800
今日推荐
周排行