私はデコレータパターンが最も混乱していることがわかりました。 「ヘッドファーストデザインパターンブック」の例を参考にしてください。デコレータパターンの代わりに
だから、ダブルモカと鞭でDarkRoastを得るために、私は、これは不要であると感じ
Beverage beverage2 = new DarkRoast();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2);
を記述する必要があります。ここに私の実装は、
interface Beverage
{
int Cost();
}
class DarkRoast : Beverage
{
/* .... */
}
class Mocha : Beverage
{
/* .... */
}
class Whip : Beverage
{
/* .... */
}
// here is the changed part
class Order
{
List<Beverage> beverages = new List<Beverage> beverages();
public void AddItem(Beverage b)
{
beverages.Add(b);
}
public int Cost()
{
int cost;
foreach(Beverage b in beverages)
cost += b.Cost();
}
}
// use it like
Order order = new Order();
order.AddItem(new DarkRoast());
order.AddItem(new Mocha());
order.AddItem(new Mocha());
order.AddItem(new Whip());
int cost = order.Cost();
IMO、どちらも同じです。はいの場合、ここでデコレータパターンを使用する利点は何ですか?
どのような考えですか?
ありがとうございました。これはそれをうまく説明します。 –
あなたはそれをうまく説明しました。 –