装饰者模式

using System;
using System.Collections.Generic;
using System.Text;

//装饰者模式
namespace designMode
{
class Person
{
public Person()
{

}

private string name;
public Person(string name)
{
this.name = name;
}

public virtual void Show()
{
Console.WriteLine(
"装扮的{0}", name);
}
}

class Finery : Person
{
protected Person component;

//打扮
public void Decorate(Person component)
{
this.component = component;
}

public override void Show()
{
if (component != null)
{
component.Show();
}
}
}

class TShirts : Finery
{
public override void Show()
{
{
Console.WriteLine(
"大T恤");
base.Show();
}
}
}

class BigTrouser : Finery
{
public override void Show()
{
{
Console.WriteLine(
"垮裤");
base.Show();
}
}
}

class WearSneakers : Finery
{
public override void Show()
{
{
Console.WriteLine(
"破球鞋");
base.Show();
}
}
}

class WearSuit : Finery
{
public override void Show()
{
{
Console.WriteLine(
"西装");
base.Show();
}
}
}

class WearTie : Finery
{
public override void Show()
{
{
Console.WriteLine(
"领带");
base.Show();
}
}
}

class WearLeatherShoes : Finery
{
public override void Show()
{
{
Console.WriteLine(
"破球鞋");
base.Show();
}
}
}

}

  

using System;
using System.Collections.Generic;
using System.Text;

namespace designMode
{
class Program
{
static void Main(string[] args)
{

//装饰者模式
Person xc = new Person("小菜");
Console.WriteLine(
"\n第一张装扮:");

WearSneakers pqx
= new WearSneakers();
BigTrouser kk
= new BigTrouser();
TShirts dtx
= new TShirts();

pqx.Decorate(xc);
kk.Decorate(pqx);
dtx.Decorate(kk);
dtx.Show();

Console.WriteLine(
"\n第二种装扮:");

WearLeatherShoes px
= new WearLeatherShoes();
WearTie ld
= new WearTie();
WearSuit xz
= new WearSuit();

px.Decorate(xc);
ld.Decorate(px);
xz.Decorate(ld);
xz.Show();

Console.Read();
}
}
}

  

原文地址:https://www.cnblogs.com/cjingzm/p/2124395.html