今天听了webcast的C#设计模型 感觉更好了,因为之前看过《小菜与大鸟不得不说的事》今天温习一下感觉装饰者模式真的很爽啊好了 废话少说 放代码
Code
此为抽象类,是抽象的哦。
class T50:Tank
{
public override void Shot()
{
Console.WriteLine("我是T50坦克");
}
public override void Run()
{
Console.WriteLine("我可走正常的路");
}
}
{
public override void Shot()
{
Console.WriteLine("我是T50坦克");
}
public override void Run()
{
Console.WriteLine("我可走正常的路");
}
}
一个实体类继承自抽象
下面轮到我们的主角装饰者类上场了
class JiaNongPo:Tank
{
private Tank tank;
public JiaNongPo(Tank tank)
{
this.tank = tank;
}
public override void Shot()
{
Console.WriteLine("装备加农炮");
}
public override void Run()
{
tank.Run();
}
}
class Papo : Tank
{
private Tank tank;
public Papo(Tank tank)
{
this.tank = tank;
}
public override void Run()
{
Console.WriteLine("装备爬坡器!");
}
public override void Shot()
{
tank.Shot();
}
}
{
private Tank tank;
public JiaNongPo(Tank tank)
{
this.tank = tank;
}
public override void Shot()
{
Console.WriteLine("装备加农炮");
}
public override void Run()
{
tank.Run();
}
}
class Papo : Tank
{
private Tank tank;
public Papo(Tank tank)
{
this.tank = tank;
}
public override void Run()
{
Console.WriteLine("装备爬坡器!");
}
public override void Shot()
{
tank.Shot();
}
}
这是我们的装饰者类,之前用过另外一个抽象装饰者类来继承Tank类 后来发现状态保存比较麻烦,所以不用了 直接用
具体的装饰者来继承但是一个缺点就是当Tank类中的方法较多的时候会要求全部重载 Tank类的方法比较麻烦啊,不知各位有什么好的解决办法。好了天不早了 我要休息了啊 努力中....