Advertisement
Guest User

Untitled

a guest
May 24th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.95 KB | None | 0 0
  1. public class Main
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         FabricaDePizza fabrica = FabricaDePizza.getFabrica(TipoFabricaPizza.PIZZAS_SALGADAS);
  6.         Pizza pizza = fabrica.getPizza(TipoPizza.CALABRESA);
  7.        
  8.         System.out.println("Pizza: " + TipoPizza.CALABRESA + "\nSabor: " + pizza.getSabor() + "\nValor: " + pizza.getValor());
  9.     }
  10. }
  11.  
  12. interface Pizza
  13. {
  14.     String getSabor();
  15.  
  16.     double getValor();
  17. }
  18.  
  19. enum TipoPizza
  20. {
  21.     BANANA,
  22.     CALABRESA,
  23.     FRANGO;
  24. }
  25.  
  26. class PizzaCalabresa implements Pizza
  27. {
  28.     public String getSabor() { return "Salgado"; }
  29.    
  30.     public double getValor() { return 10.0; }
  31. }
  32.  
  33. class PizzaFrango implements Pizza
  34. {
  35.     public String getSabor() { return "Salgado"; }
  36.    
  37.     public double getValor() { return 9.0; }
  38. }
  39.  
  40. class PizzaBanana implements Pizza
  41. {
  42.     public String getSabor() { return "Doce"; }
  43.  
  44.     public double getValor() { return 7.0; }
  45.  
  46. }
  47.  
  48. enum TipoFabricaPizza
  49. {
  50.     PIZZAS_SALGADAS,
  51.     PIZZAS_DOCES;
  52. }
  53.  
  54. class FabricaDePizzaSalgada extends FabricaDePizza
  55. {
  56.     public Pizza getPizza(TipoPizza tipo)
  57.     {
  58.         switch (tipo)
  59.         {
  60.             case CALABRESA: return new PizzaCalabresa();
  61.             case FRANGO: return new PizzaFrango();
  62.             default: return null;
  63.         }
  64.     }
  65.    
  66. }
  67.  
  68. class FabricaDePizzaDoce extends FabricaDePizza
  69. {
  70.     public Pizza getPizza(TipoPizza tipo)
  71.     {
  72.         switch (tipo)
  73.         {
  74.             case BANANA: return new PizzaBanana();
  75.             default: return null;
  76.         }
  77.     }
  78. }
  79.  
  80. abstract class FabricaDePizza
  81. {
  82.     public abstract Pizza getPizza(TipoPizza tipo);
  83.    
  84.     public static FabricaDePizza getFabrica(TipoFabricaPizza tipoFabrica)
  85.     {
  86.         switch (tipoFabrica)
  87.         {
  88.             case PIZZAS_SALGADAS: return new FabricaDePizzaSalgada();
  89.             case PIZZAS_DOCES: return new FabricaDePizzaDoce();
  90.             default: return null;
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement