以下のコードを実行すると、
不明な飲み物
1.09
と出力されますが、本当は、
ダークローストコーヒー、ホイップ
1.09
と出力されてほしいです。
何がいけないのか、どうすれば思惑通りにいくか、教えていただけないでしょうか。
説明不足でしたらすみません。
コードも冗長で申し訳ありませんが、なにとぞお願いいたします。
###該当のソースコード
C#
1using System; 2abstract class Beverage { 3 protected string description = "不明な飲み物"; 4 5 public virtual string GetDescription() { 6 return description; 7 } 8 9 public abstract double Cost(); 10} 11 12 13abstract class Topping : Beverage { 14 public abstract string GetDescription(); 15} 16 17 18class Whip : Topping { 19 Beverage beverage; 20 21 public Whip(Beverage beverage) { 22 this.beverage = beverage; 23 } 24 25 public override string GetDescription() { 26 return beverage.GetDescription() + "、ホイップ"; 27 } 28 29 public override double Cost() { 30 return beverage.Cost() + 0.30; 31 } 32} 33 34class DarkRoast : Beverage { 35 public DarkRoast() { 36 description = "ダークローストコーヒー"; 37 } 38 39 public override double Cost() { 40 return 0.79; 41 } 42} 43 44interface Test { 45 void Start(); 46} 47 48class TestDecoratorPattern : Test { 49 public void Start() { 50 Beverage beverage = new DarkRoast(); 51 beverage = new Whip(beverage); 52 53 Console.WriteLine(beverage.GetDescription()); 54 Console.WriteLine(beverage.Cost()); 55 56 } 57} 58 59class Program { 60 static void Main() { 61 Test test_decorator = new TestDecoratorPattern(); 62 test_decorator.Start(); 63 } 64}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/01 12:20