C#设计模式-装饰模式
程序员文章站
2022-06-13 13:49:56
...
装饰模式是为已有功能动态的添加更多功能的一种方式。
装饰模式最大的好处就是有效的把类的核心职责和装饰功能区分开。
一个穿衣服的装饰模式小demo
有一个小知识点,就是在C#中只有虚函数才能被重写与Java有一点小区别
//主要就是三个类 Person Finery Clothes
//Person 是被装饰类
//Finery是装饰类
//其他的Clothes是模块,也就是装饰被装饰类的类
using System;
namespace std
{
class main
{
static void Main(string [] args)
{
Person sx = new Person("阿毛");
Tshift tshift = new Tshift();
Trouse tr = new Trouse();
Cap cap = new Cap();
tshift.Decorate(sx);
tr.Decorate(tshift);
cap.Decorate(tr);
cap.show();
}
}
class Person
{
public Person()
{
}
string name;
public Person(string name)
{
this.name = name;
}
public virtual void show()
{
Console.WriteLine("装扮着的{0}", this.name);
}
}
class Finery : Person
{
Person component;
public void Decorate(Person component)
{
this.component = component;
}
public override void show()
{
if(this.component != null)
{
this.component.show();
}
}
}
class Tshift : Finery
{
public override void show()
{
Console.WriteLine("T恤");
base.show();
}
}
class Trouse : Finery
{
public override void show()
{
Console.WriteLine("裤子");
base.show();
}
}
class Cap : Finery
{
public override void show()
{
Console.WriteLine("帽子");
base.show();
}
}
}
测试结果