У меня есть реализация шаблона декоратора, Теперь я хочу написать метод «Добавить украшение», который является лучшим классом/интерфейсом для этого метода ICar или Car? и как указать основной автомобиль на новый украшенный автомобиль?Decorator Pattern
Пример использования:
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
Это не типичный способ реализации рисунка декоратора. Декораторы должны взять украшенный объект в конструкторе и оба декоратора и украсить реализацией того же интерфейса/абстрактного класса. –