저는 처음으로 디자인 패턴을 고수하려고합니다.하지만 C# 대신 Java 대신 예제를 코딩하고 있습니다. 데코레이터 패턴을 코딩했는데 수정 방법을 알 수없는 이상한 버그가 있습니다. 줄 1은 예상대로 실행되고 설명은 "Dark Roast"이지만 줄 2는 "Dark Roast, Mocha"대신 "unknown beverage"로 설명을 변경합니다. 이 동작을 어떻게 수정합니까?C# 상속이 예상대로 동작하지 않습니다.
메인 프로그램 :
beverage = new DarkRoast();
beverage = new Mocha(beverage);
beverage = new Mocha(beverage);
Console.WriteLine(beverage.Description + " $" + beverage.Cost);
데코레이터 코드 :
namespace DecoratorPattern
{
public abstract class Beverage
{
public abstract double Cost { get; }
public string Description { get; set; } = "unknown beverage";
}
public class DarkRoast : Beverage
{
public DarkRoast()
{
Description = "Dark Roast";
}
public override double Cost => .99;
}
public abstract class CondimentDecorator : Beverage
{
public abstract string Description { get; }
}
public class Mocha : CondimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override string Description
{
get { return beverage.Description + ", Mocha"; }
}
public override double Cost => .20 + beverage.Cost;
}
}
메인 프로그램 d 컴파일 할 필요가 없습니다. – Ian