Seal_of_approval

Decorator

Dec 15th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.85 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Decorator
  4. {
  5.     abstract class Burger
  6.     {
  7.         public string Name { get; protected set;}
  8.  
  9.         public Burger(string n)
  10.         {
  11.             this.Name = n;
  12.         }
  13.  
  14.         public abstract int GetCost();
  15.     }
  16.  
  17.     abstract class BurgerDecorator: Burger
  18.     {
  19.         protected Burger burger;
  20.         public BurgerDecorator(string n, Burger burger) : base(n)
  21.         {
  22.             this.burger = burger;  
  23.         }
  24.     }
  25.  
  26.     class CheeseBurger : Burger
  27.     {
  28.         public CheeseBurger() : base("CheeseBurger")
  29.         {}
  30.  
  31.         public override int GetCost()
  32.         {
  33.             return 50;
  34.         }
  35.     }
  36.  
  37.     class CheekenBurger : Burger
  38.     {
  39.         public CheekenBurger() : base("Cheeken burger")
  40.         {}
  41.  
  42.         public override int GetCost()
  43.         {
  44.             return 49;
  45.         }
  46.     }
  47.  
  48.     class Vegetables : BurgerDecorator
  49.     {
  50.         public Vegetables(Burger b) : base (b.Name + " + vegetables", b)
  51.         {}
  52.  
  53.         public override int GetCost()
  54.         {
  55.             return burger.GetCost () + 20;
  56.         }
  57.     }
  58.  
  59.     class DoubleCheese : BurgerDecorator
  60.     {
  61.         public DoubleCheese(Burger b) : base (b.Name + " + double cheese", b)
  62.         {}
  63.  
  64.         public override int GetCost()
  65.         {
  66.             return burger.GetCost () + 30;
  67.         }
  68.     }
  69.  
  70.     class DoubleCutlet : BurgerDecorator
  71.     {
  72.         public DoubleCutlet(Burger b) : base (b.Name + " + double cutlet", b)
  73.         {}
  74.  
  75.         public override int GetCost()
  76.         {
  77.             return burger.GetCost () + 50;
  78.         }
  79.     }
  80.  
  81.     class MainClass
  82.     {
  83.         public static void Main (string[] args)
  84.         {
  85.             Burger myBurger = new CheekenBurger ();
  86.             myBurger = new DoubleCutlet (myBurger);
  87.             myBurger = new DoubleCheese (myBurger);
  88.             Burger myBurger2 = new CheeseBurger ();
  89.             myBurger2 = new Vegetables (myBurger2);
  90.             Console.WriteLine ("Your order:");
  91.             Console.WriteLine ("1) {0} = {1}", myBurger.Name, myBurger.GetCost());
  92.             Console.WriteLine ("2) {0} = {1}", myBurger2.Name, myBurger2.GetCost());
  93.             Console.WriteLine ("Order price = {0}", myBurger.GetCost() + myBurger2.GetCost());
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment