Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. using System;
  2.  
  3. namespace WzorzecDekorator{
  4.  
  5.  
  6. public interface INapoj{
  7. string GetNazwa();
  8. double GetCena();
  9. }
  10.  
  11.  
  12. public class Espresso : INapoj
  13. {
  14. public string GetNazwa()
  15. {
  16. return "espresso";
  17. }
  18. public double GetCena()
  19. {
  20.  
  21. return 4.99;
  22. }
  23. }
  24. public class Herbata : INapoj
  25. {
  26. public double GetCena()
  27. {
  28. return 5.99;
  29. }
  30.  
  31. public string GetNazwa()
  32. {
  33. return "herbata";
  34. }
  35. }
  36.  
  37.  
  38.  
  39. public abstract class Decorator : INapoj{
  40. INapoj _napoj;
  41.  
  42. protected string _nazwa;
  43. protected double _price;
  44.  
  45. public Decorator(INapoj napoj){
  46. _napoj = napoj;
  47. }
  48.  
  49. public string GetNazwa(){
  50. return string.Format("{0}, {1}", _napoj.GetNazwa(), _nazwa);
  51. }
  52.  
  53. public double GetCena(){
  54.  
  55. return _price+_napoj.GetCena();
  56. }
  57. }
  58.  
  59.  
  60. public class Cukier:Decorator{
  61. public Cukier(INapoj napoj) : base(napoj){
  62. _nazwa = "cukier";
  63. _price = 0.50;
  64. }
  65. }
  66.  
  67. public class Mleko:Decorator
  68. {
  69. public Mleko(INapoj napoj) : base(napoj)
  70. {
  71. _nazwa = "mleko";
  72. _price = 0.99;
  73. }
  74. }
  75. public class SpienioneMleko:Decorator
  76. {
  77. public SpienioneMleko(INapoj napoj) : base(napoj)
  78. {
  79. _nazwa = "spienione mleko";
  80. _price = 1.29;
  81. }
  82. }
  83. public class SyropCzekoladowy:Decorator
  84. {
  85. public SyropCzekoladowy(INapoj napoj) : base(napoj)
  86. {
  87. _nazwa = "syrop czekoladowy";
  88. _price = 0.70;
  89. }
  90. }
  91.  
  92.  
  93. class Program{
  94. static void Main(string[] args){
  95.  
  96. var kawa_cappuccino = new SpienioneMleko(new Mleko(new Espresso()));
  97. Console.WriteLine("Cappuccino:");
  98. Console.WriteLine("{0} - cena: {1} zł", kawa_cappuccino.GetNazwa(), kawa_cappuccino.GetCena() );
  99.  
  100. Console.WriteLine();
  101.  
  102. var kawa_mocha = new SpienioneMleko(new Mleko(new SyropCzekoladowy(new Espresso())));
  103. Console.WriteLine("Mocha:");
  104. Console.WriteLine("{0} - cena: {1} zł", kawa_mocha.GetNazwa(), kawa_mocha.GetCena() );
  105.  
  106. Console.WriteLine();
  107.  
  108. var herbata_bawarka = new Mleko(new Herbata());
  109. Console.WriteLine("Bawarka:");
  110. Console.WriteLine("{0} - cena: {1} zł", herbata_bawarka.GetNazwa(), herbata_bawarka.GetCena() );
  111.  
  112.  
  113. /* A TO NIE ZADZIAŁA - NIE można mieszać kawy i herbaty!
  114. var herbata_z_kawa = new Espresso(new Herbata());
  115. */
  116.  
  117. }
  118. }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement