Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Events
- {
- delegate void PongYou();
- delegate bool Comparer(int a, int b);
- class Program
- {
- static void Main(string[] args)
- {
- Beverage beverage1 = new Espresso();
- Console.WriteLine(beverage1.GetDescription() + " $" + beverage1.Cost());
- Console.WriteLine();
- Beverage beverage11 = new Espresso();
- beverage11.SetSize(3);
- Console.WriteLine(beverage11.GetDescription() + " $" + beverage11.Cost());
- Console.WriteLine();
- Beverage beverage2 = new DarkRoast();
- beverage2 = new Mocha(beverage2);
- beverage2 = new Mocha(beverage2);
- beverage2 = new Whip(beverage2);
- Console.WriteLine(beverage2.GetDescription() + " $" + beverage2.Cost());
- Console.WriteLine();
- Beverage beverage22 = new DarkRoast();
- beverage22.SetSize(2);
- beverage22 = new Mocha(beverage22);
- beverage22 = new Mocha(beverage22);
- beverage22 = new Whip(beverage22);
- Console.WriteLine(beverage22.GetDescription() + " $" + beverage22.Cost());
- Console.WriteLine();
- Beverage beverage3 = new HouseBlend();
- beverage3 = new Soy(beverage3);
- beverage3 = new Mocha(beverage3);
- beverage3 = new Whip(beverage3);
- Console.WriteLine(beverage3.GetDescription() + " $" + beverage3.Cost());
- Console.WriteLine();
- Beverage beverage33 = new HouseBlend();
- beverage33.SetSize(1);
- beverage33 = new Soy(beverage33);
- beverage33 = new Mocha(beverage33);
- beverage33 = new Whip(beverage33);
- Console.WriteLine(beverage33.GetDescription() + " $" + beverage33.Cost());
- Console.WriteLine();
- Console.ReadKey();
- }
- }
- class Whip : CondimentDecorator
- {
- private Beverage _beverage;
- public Whip(Beverage beverage)
- {
- _beverage = beverage;
- }
- public override float Cost()
- {
- float cost = _beverage.Cost();
- switch (GetSize())
- {
- case 1:
- cost += 0.02f;
- break;
- case 2:
- cost += 0.05f;
- break;
- case 3:
- cost += 0.10f;
- break;
- }
- return cost;
- }
- public override int GetSize()
- {
- return _beverage.GetSize();
- }
- public override string GetDescription()
- {
- return _beverage.GetDescription() + " + Взбитые сливки";
- }
- }
- class Soy : CondimentDecorator
- {
- private Beverage _beverage;
- public Soy(Beverage beverage)
- {
- _beverage = beverage;
- }
- public override float Cost()
- {
- float cost = _beverage.Cost();
- switch (GetSize())
- {
- case 1:
- cost += 0.02f;
- break;
- case 2:
- cost += 0.08f;
- break;
- case 3:
- cost += 0.15f;
- break;
- }
- return cost;
- }
- public override int GetSize()
- {
- return _beverage.GetSize();
- }
- public override string GetDescription()
- {
- return _beverage.GetDescription() + " + Соя";
- }
- }
- class Mocha : CondimentDecorator
- {
- private Beverage _beverage;
- public Mocha(Beverage beverage)
- {
- _beverage = beverage;
- }
- public override float Cost()
- {
- float cost = _beverage.Cost();
- switch (GetSize())
- {
- case 1:
- cost += 0.05f;
- break;
- case 2:
- cost += 0.10f;
- break;
- case 3:
- cost += 0.20f;
- break;
- }
- return cost;
- }
- public override int GetSize()
- {
- return _beverage.GetSize();
- }
- public override string GetDescription()
- {
- return _beverage.GetDescription() + " + Шоколад";
- }
- }
- class Decaf : Beverage
- {
- public Decaf()
- {
- _description = "Без кофеина";
- }
- public override float Cost()
- {
- switch (GetSize())
- {
- case 1:
- return 0.35f;
- case 2:
- return 0.65f;
- case 3:
- return 0.99f;
- default:
- return 0f;
- }
- }
- }
- class DarkRoast : Beverage
- {
- public DarkRoast()
- {
- _description = "Темная обжарка";
- }
- public override float Cost()
- {
- switch (GetSize())
- {
- case 1:
- return 0.35f;
- case 2:
- return 0.65f;
- case 3:
- return 0.99f;
- default:
- return 0f;
- }
- }
- }
- class HouseBlend : Beverage
- {
- public HouseBlend()
- {
- _description = "Домашняя обжарка";
- }
- public override float Cost()
- {
- switch (GetSize())
- {
- case 1:
- return 0.25f;
- case 2:
- return 0.55f;
- case 3:
- return 0.89f;
- default:
- return 0f;
- }
- }
- }
- class Espresso : Beverage
- {
- public Espresso()
- {
- _description = "Обычный эспрессо";
- }
- public override float Cost()
- {
- switch(GetSize())
- {
- case 1:
- return 1.00f;
- case 2:
- return 1.55f;
- case 3:
- return 1.99f;
- default:
- return 0f;
- }
- }
- }
- abstract class Beverage
- {
- protected string _description = "Какое-то определение";
- private int _size = 1;
- public virtual string GetDescription()
- {
- return _description;
- }
- public virtual void SetSize(int size)
- {
- switch (size)
- {
- case 1:
- _size = 1;
- break;
- case 2:
- _size = 2;
- break;
- case 3:
- _size = 3;
- break;
- }
- }
- public virtual int GetSize()
- {
- return _size;
- }
- public abstract float Cost();
- }
- abstract class CondimentDecorator : Beverage
- {
- public abstract override string GetDescription();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement