我正在努力
Decorator Design Pattern
这就是我得到的:
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值?