Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Decorator
- {
- abstract class Burger
- {
- public string Name { get; protected set;}
- public Burger(string n)
- {
- this.Name = n;
- }
- public abstract int GetCost();
- }
- abstract class BurgerDecorator: Burger
- {
- protected Burger burger;
- public BurgerDecorator(string n, Burger burger) : base(n)
- {
- this.burger = burger;
- }
- }
- class CheeseBurger : Burger
- {
- public CheeseBurger() : base("CheeseBurger")
- {}
- public override int GetCost()
- {
- return 50;
- }
- }
- class CheekenBurger : Burger
- {
- public CheekenBurger() : base("Cheeken burger")
- {}
- public override int GetCost()
- {
- return 49;
- }
- }
- class Vegetables : BurgerDecorator
- {
- public Vegetables(Burger b) : base (b.Name + " + vegetables", b)
- {}
- public override int GetCost()
- {
- return burger.GetCost () + 20;
- }
- }
- class DoubleCheese : BurgerDecorator
- {
- public DoubleCheese(Burger b) : base (b.Name + " + double cheese", b)
- {}
- public override int GetCost()
- {
- return burger.GetCost () + 30;
- }
- }
- class DoubleCutlet : BurgerDecorator
- {
- public DoubleCutlet(Burger b) : base (b.Name + " + double cutlet", b)
- {}
- public override int GetCost()
- {
- return burger.GetCost () + 50;
- }
- }
- class MainClass
- {
- public static void Main (string[] args)
- {
- Burger myBurger = new CheekenBurger ();
- myBurger = new DoubleCutlet (myBurger);
- myBurger = new DoubleCheese (myBurger);
- Burger myBurger2 = new CheeseBurger ();
- myBurger2 = new Vegetables (myBurger2);
- Console.WriteLine ("Your order:");
- Console.WriteLine ("1) {0} = {1}", myBurger.Name, myBurger.GetCost());
- Console.WriteLine ("2) {0} = {1}", myBurger2.Name, myBurger2.GetCost());
- Console.WriteLine ("Order price = {0}", myBurger.GetCost() + myBurger2.GetCost());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment