public static void Main()
menu1 = new Smoothie1(menu1);
menu1 = new Juice1(menu1);
menu1 = new Porridge1(menu1);
Console.WriteLine("Меню: {0}", menu1.Name);
Console.WriteLine("Цена: {0}", menu1.GetCost());
public string Name { get; set; }
public abstract int GetCost();
public Soup() : base("Суп")
public override int GetCost()
public Smoothie() : base("Пюре")
public override int GetCost()
public Juice() : base("Сок")
public override int GetCost()
public Porridge() : base("Каша")
public override int GetCost()
abstract class Decorator : Menu
public Decorator(string name, Menu menu) : base(name)
public Soup1(Menu m) : base (m.Name + ", Суп", m)
public override int GetCost()
return menu.GetCost() + 35;
class Smoothie1 : Decorator
public Smoothie1(Menu m) : base(m.Name + ", Пюре", m)
public override int GetCost()
return menu.GetCost() + 42;
public Juice1(Menu m) : base(m.Name + ", Сок", m)
public override int GetCost()
return menu.GetCost() + 26;
class Porridge1 : Decorator
public Porridge1(Menu m) : base(m.Name + ", Каша", m)
public override int GetCost()
return menu.GetCost() + 48;