Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1.  
  2.  
  3. //Ejemplo de implementacion del patron Decorator.
  4.  
  5. //Extraido del libro: Head First Design Pattens
  6.  
  7.  
  8. //************* COMPONENTS ************************************************
  9. abstract class Emparedado {
  10. String description = "Unknown Emparedado";
  11. public String getDescription() {
  12. return description;
  13. }
  14. public abstract double cost();
  15. }
  16.  
  17. class Burger extends Emparedado {
  18. public Burger() {
  19. description = "Burger";
  20. }
  21. public double cost() {
  22. return 1.99;
  23. }
  24. }
  25.  
  26. class Sandwich extends Emparedado {
  27. public Sandwich() {
  28. description = "Sandwich";
  29. }
  30. public double cost() {
  31. return .89;
  32. }
  33. }
  34.  
  35.  
  36.  
  37. //************* DECORATORS ************************************************
  38. abstract class IngredientDecorator extends Emparedado {
  39. public abstract String getDescription();
  40. }
  41.  
  42. class Papas extends IngredientDecorator {
  43. Emparedado emparedado;
  44. public Papas(Emparedado emparedado) {
  45. this.emparedado = emparedado;
  46. }
  47. public String getDescription() {
  48. return emparedado.getDescription() + ", Papas";
  49. }
  50. public double cost() {
  51. return .20 + emparedado.cost();
  52. }
  53. }
  54.  
  55. class Jamon extends IngredientDecorator {
  56. Emparedado emparedado;
  57. public Jamon(Emparedado emparedado) {
  58. this.emparedado = emparedado;
  59. }
  60. public String getDescription() {
  61. return emparedado.getDescription() + ", Jamon";
  62. }
  63. public double cost() {
  64. return .15 + emparedado.cost();
  65. }
  66. }
  67.  
  68. class Queso extends IngredientDecorator {
  69. Emparedado emparedado;
  70. public Queso(Emparedado emparedado) {
  71. this.emparedado = emparedado;
  72. }
  73. public String getDescription() {
  74. return emparedado.getDescription() + ", Queso";
  75. }
  76. public double cost() {
  77. return .10 + emparedado.cost();
  78. }
  79. }
  80.  
  81. class Pepinillo extends IngredientDecorator {
  82. Emparedado emparedado;
  83. public Pepinillo(Emparedado emparedado) {
  84. this.emparedado = emparedado;
  85. }
  86. public String getDescription() {
  87. return emparedado.getDescription() + ", Pepinillo";
  88. }
  89. public double cost() {
  90. return .10 + emparedado.cost();
  91. }
  92. }
  93. class Tocino extends IngredientDecorator {
  94. Emparedado emparedado;
  95. public Tocino(Emparedado emparedado) {
  96. this.emparedado = emparedado;
  97. }
  98. public String getDescription() {
  99. return emparedado.getDescription() + ", Tocino";
  100. }
  101. public double cost() {
  102. return .10 + emparedado.cost();
  103. }
  104. }
  105. class Catsup extends IngredientDecorator {
  106. Emparedado emparedado;
  107. public Catsup(Emparedado emparedado) {
  108. this.emparedado = emparedado;
  109. }
  110. public String getDescription() {
  111. return emparedado.getDescription() + ", Catsup";
  112. }
  113. public double cost() {
  114. return .10 + emparedado.cost();
  115. }
  116. }
  117.  
  118. public class AppAdapter {
  119. public static void main(String args[]) {
  120. Emparedado emparedado;
  121.  
  122.  
  123. emparedado = new Burger();
  124. System.out.println(emparedado.getDescription()
  125. + " $" + emparedado.cost());
  126. emparedado = new Papas(emparedado);
  127. emparedado = new Jamon(emparedado);
  128. emparedado = new Queso(emparedado);
  129. emparedado = new Pepinillo(emparedado);
  130. emparedado = new Tocino(emparedado);
  131. emparedado = new Catsup(emparedado);
  132.  
  133. System.out.println(emparedado.getDescription()
  134. + " $" + emparedado.cost());
  135.  
  136. emparedado = new Sandwich();
  137. System.out.println(emparedado.getDescription()
  138. + " $" + emparedado.cost());
  139. emparedado = new Papas(emparedado);
  140. emparedado = new Jamon(emparedado);
  141. emparedado = new Queso(emparedado);
  142. emparedado = new Pepinillo(emparedado);
  143. emparedado = new Tocino(emparedado);
  144. emparedado = new Catsup(emparedado);
  145. System.out.println(emparedado.getDescription()
  146. + " $" + emparedado.cost());
  147. }
  148.  
  149. }
  150.  
  151. //EJERCICIO: Restaurant
  152. //Implementar componentes: Hamburguesa y Sandwich
  153. //Implementar ingredientes: jamon, queso, pepinillos, tocino, catsup, papas.
  154. //Implementar 2 ejemplos de hamburguesa y 2 de sandwich con ingredientes diferentes.
  155. //Incluir el costo total basado en la suma de costos de cada ingrediente.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement