装饰模式

using System;
class Program
{
static void Main(string[] args)
{
IPerson person = new BlackPerson("andre");
Decorator decorator = new Decorator2019(person);
decorator = new Decorator2020(decorator);
decorator.ShowInfo();
Console.ReadKey();
}

public interface IPerson
{
void ShowInfo();
}

public class BlackPerson : IPerson
{
private string name;

public BlackPerson(string name)
{
this.name = name;
}

public void ShowInfo()
{
Console.WriteLine(name);
}
}


public abstract class Decorator : IPerson
{
public IPerson person;
public Decorator(IPerson person)
{
this.person = person;
}

public abstract void ShowInfo();
}

public class Decorator2019 : Decorator
{
public Decorator2019(IPerson person) : base(person)
{
}

public override void ShowInfo()
{
person.ShowInfo();
Console.WriteLine("2019年我完成了c#的学习");
}
}

public class Decorator2020 : Decorator
{
public Decorator2020(IPerson person) : base(person)
{

}

public override void ShowInfo()
{
person.ShowInfo();
Console.WriteLine("2020年完成了.net的学习");
}
}
}

posted @ 2019-03-04 16:29  东东东  阅读(66)  评论(0)    收藏  举报