Я пытаюсь сделать Шаблон оформления декоратора и вот что я получил:
Мой базовый класс - abstract Worker
класс:
public abstract class Worker
{
public float Salary { get; set; }
public abstract float CountSalary();
}
Worker
является базовым классом для Driver
:
public class Driver : Worker
{
public float Salary { get; set; }
public override float CountSalary() => Salary = 3000;
//for testing i just hard coded '3000' value
}
Мой декоратор - класс abstract Bonus
. Он украшает зарплату работника бонусами.
public abstract class Bonus : Worker
{
public Bonus(Worker worker) => this.worker = worker;
public override float CountSalary() => worker.Salary;
protected Worker worker { get; private set; }
}
public class AmountBonus : Bonus
{
public AmountBonus(Worker worker) : base(worker: worker){ }
public override float CountSalary() => base.worker.Salary + 200;
}
Я вызываю Decorator
таким образом в моем коде:
Worker w = new AmountBonus(new Driver());
И вместо 3200
, новый Salary = 200
. Не могли бы вы сказать мне, когда я делаю ошибку, и меня не предсказывают Salary = 3200
? Почему, когда я звоню так:
Worker w = new AmountBonus(new AmountBonus(new Driver()));
Мой Salary
не складывается до значения 3400?