我已經實現了一個裝飾模式,現在我想寫一個方法「添加裝飾」,這是最好的類/接口有這種方法ICAR或汽車?以及如何將基礎車指向新的裝飾車?裝飾模式
樣品使用:
ICar car=new Car();
ICar radial= new Radial();
car.AddDecoration(radial);
interface ICar
{
int Speed { get; set; }
void Accelerate();
}
class Car : ICar
{
private int speed = 0;
public int Speed
{
get
{
return speed;
}
set
{
speed = value;
}
}
public virtual void Accelerate()
{
Speed += 5;
}
}
abstract class CarModification : ICar
{
private ICar modifiedCar;
public ICar ModifiedCar
{
get { return modifiedCar; }
set { modifiedCar = value; }
}
public virtual int Speed
{
get
{
return modifiedCar.Speed;
}
set
{
modifiedCar.Speed = value;
}
}
public void Accelerate()
{
modifiedCar.Accelerate();
}
}
class Radial : CarModification
{
public void Accelerate()
{
base.Accelerate();
Speed += 1;
}
}
它在接口,隨後將具體類被定義爲好。 –
那麼我是否還需要在抽象裝飾類中實現它呢?那麼第二部分呢? – Desire
這不是實現裝飾器模式的典型方法。裝飾者應該在構造函數中使用裝飾對象,並且裝飾者和裝飾者都實現相同的接口/抽象類。 –