NSC RD 2/18/2014,还没有收到FP notice# EB23 - 劳工卡
F*e
1 楼
问题是关于decorate pattern(装饰模式),就是给一个人一件一件穿衣服的程序,基
类是人,第一个子继承类是Finery(服饰),Finery下面有3个子继承类分别是:
Tshirt Sneaker Trousers。 程序中用到了装饰模式的思想,和一堆虚函数和覆写函数
,关于这些函数和覆写函数是怎么跑的我看不明白,贴上代码:请牛人观观!
class Program
{
static void Main(string[] args)
{
Person Alice = new Person("Alice");
Console.WriteLine("\n Alice's beautiful dress are:");
Sneakers sneaker = new Sneakers();
BigTrouser trouser = new BigTrouser();
TShirts tshirt = new TShirts();
sneaker.Decorate(Alice); trouser.Decorate(sneaker); 就是这一段看不明白!!!!!
tshirt.Decorate(trouser); 虚函数+覆写函数 咋有递归的感觉
tshirt.Show(); Console.Read();
}
}
class Person //base class
{
private string name;
public Person()
{
}
public Person(string name)
{
this.name = name;
}
public virtual void Show()
{
Console.WriteLine("Decorated person is: {0}", name);
}
}
class Finery : Person
{
protected Person component;
// start decotate
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.Write("Tshirt ");
base.Show();
}
}
class BigTrouser : Finery
{
public override void Show()
{
Console.Write("Trousers ");
base.Show();
}
}
class Sneakers : Finery
{
public override void Show()
{
Console.Write("Sneakers ");
base.Show();
}
}
Alice's beautiful dress are:
Tshirt Trousers Sneakers Decorated person is: Alice
类是人,第一个子继承类是Finery(服饰),Finery下面有3个子继承类分别是:
Tshirt Sneaker Trousers。 程序中用到了装饰模式的思想,和一堆虚函数和覆写函数
,关于这些函数和覆写函数是怎么跑的我看不明白,贴上代码:请牛人观观!
class Program
{
static void Main(string[] args)
{
Person Alice = new Person("Alice");
Console.WriteLine("\n Alice's beautiful dress are:");
Sneakers sneaker = new Sneakers();
BigTrouser trouser = new BigTrouser();
TShirts tshirt = new TShirts();
sneaker.Decorate(Alice); trouser.Decorate(sneaker); 就是这一段看不明白!!!!!
tshirt.Decorate(trouser); 虚函数+覆写函数 咋有递归的感觉
tshirt.Show(); Console.Read();
}
}
class Person //base class
{
private string name;
public Person()
{
}
public Person(string name)
{
this.name = name;
}
public virtual void Show()
{
Console.WriteLine("Decorated person is: {0}", name);
}
}
class Finery : Person
{
protected Person component;
// start decotate
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.Write("Tshirt ");
base.Show();
}
}
class BigTrouser : Finery
{
public override void Show()
{
Console.Write("Trousers ");
base.Show();
}
}
class Sneakers : Finery
{
public override void Show()
{
Console.Write("Sneakers ");
base.Show();
}
}
Alice's beautiful dress are:
Tshirt Trousers Sneakers Decorated person is: Alice