Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace wzorce
  8. {
  9. public class Adapter
  10. {
  11.  
  12. }
  13.  
  14.  
  15. public interface INapoj
  16. {
  17. string GetNazwa();
  18. double GetCena();
  19.  
  20. }
  21.  
  22. public class Espresso : INapoj
  23. {
  24. string _name = "Espresso";
  25. double _price = 4.99;
  26.  
  27. //
  28. // klasa implementuje interfejs (2 metody, wystarczy że będą zwracać "espresso" i 4.99)
  29. //
  30. public double GetCena()
  31. {
  32. return _price;
  33. }
  34.  
  35. public string GetNazwa()
  36. {
  37. return _name;
  38. }
  39. }
  40.  
  41. public class Herbata : INapoj
  42. {
  43. string _name = "Herbata";
  44. double _price = 4.99;
  45.  
  46. //
  47. // klasa implementuje interfejs (2 metody, wystarczy że będą zwracać "espresso" i 4.99)
  48. //
  49. public double GetCena()
  50. {
  51. return _price;
  52. }
  53.  
  54. public string GetNazwa()
  55. {
  56. return _name;
  57. }
  58. }
  59.  
  60. //
  61. // Herbata, klasa podobna do Espresso
  62. //
  63.  
  64. public abstract class Decorator : INapoj
  65. {
  66. INapoj _napoj;
  67.  
  68. protected string _name;
  69. protected double _price;
  70.  
  71. //
  72. // deklaracja potrzebnych atrybutów
  73. //
  74.  
  75. public Decorator(INapoj napoj)
  76. {
  77. _napoj = napoj;
  78. }
  79.  
  80. public string GetNazwa()
  81. {
  82. return string.Format("{0}, {1}", _napoj.GetNazwa(), _name);
  83. }
  84.  
  85. public double GetCena()
  86. {
  87. return _price + _napoj.GetCena();
  88. }
  89. }
  90.  
  91.  
  92. public class Cukier : Decorator
  93. {
  94. public Cukier(INapoj napoj) : base(napoj)
  95. {
  96. _name = "cukier";
  97. _price = 3.33;
  98. }
  99. }
  100.  
  101. public class SyropCzekoladowy : Decorator
  102. {
  103. public SyropCzekoladowy(INapoj napoj) : base(napoj)
  104. {
  105. _name = "syrop czekoladowy";
  106. _price = 2.27;
  107. }
  108. }
  109.  
  110. public class Mleko : Decorator
  111. {
  112. public Mleko(INapoj napoj) : base(napoj)
  113. {
  114. _name = "mleko";
  115. _price = 1.00;
  116. }
  117. }
  118.  
  119. public class SpienioneMleko : Decorator
  120. {
  121. public SpienioneMleko(INapoj napoj) : base(napoj)
  122. {
  123. _name = "spienione mleko";
  124. _price = 1.30;
  125. }
  126. }
  127.  
  128. public class Piana : Decorator
  129. {
  130. public Piana(INapoj napoj) : base(napoj)
  131. {
  132. _name = "piana";
  133. _price = 1.30;
  134. }
  135. }
  136. //
  137. // definicja dla poszczególnych składników
  138. //
  139.  
  140.  
  141. public class Adap
  142. {
  143. public void Main()
  144. {
  145.  
  146. // stworzenie obiektu
  147. // wypisanie na konsoli co to jest
  148. var kawa_cappuccino = new Mleko(new Piana(new Espresso()));
  149. Console.WriteLine("{0} - cena: {1} zł", kawa_cappuccino.GetNazwa(), kawa_cappuccino.GetCena());
  150.  
  151. Console.WriteLine();
  152.  
  153. var kawa_mocha = new Mleko(new SyropCzekoladowy(new Espresso()));
  154. Console.WriteLine("Mocha:");
  155. Console.WriteLine(String.Format("Nazwa: {0} - cena {1}", kawa_mocha.GetNazwa(), kawa_mocha.GetCena()));
  156. // wypisanie składników i cen
  157.  
  158. Console.WriteLine();
  159.  
  160. var herbata_bawarka = new Mleko(new Herbata());
  161. Console.WriteLine("Herbata:");
  162. Console.WriteLine(String.Format("Nazwa: {0}", herbata_bawarka.GetNazwa()));
  163. Console.WriteLine(String.Format("Cena: {0}", herbata_bawarka.GetCena().ToString()));
  164. // wypisanie na konsoli co to jest
  165. // wypisanie składników i cen
  166.  
  167. /* A TO NIE ZADZIAŁA - NIE można mieszać kawy i herbaty!
  168. var herbata_z_kawa = new Espresso(new Herbata());
  169. */
  170. Console.ReadLine() ;
  171. }
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement