Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Main
- {
- public static void main(String[] args)
- {
- FabricaDePizza fabrica = FabricaDePizza.getFabrica(TipoFabricaPizza.PIZZAS_SALGADAS);
- Pizza pizza = fabrica.getPizza(TipoPizza.CALABRESA);
- System.out.println("Pizza: " + TipoPizza.CALABRESA + "\nSabor: " + pizza.getSabor() + "\nValor: " + pizza.getValor());
- }
- }
- interface Pizza
- {
- String getSabor();
- double getValor();
- }
- enum TipoPizza
- {
- BANANA,
- CALABRESA,
- FRANGO;
- }
- class PizzaCalabresa implements Pizza
- {
- public String getSabor() { return "Salgado"; }
- public double getValor() { return 10.0; }
- }
- class PizzaFrango implements Pizza
- {
- public String getSabor() { return "Salgado"; }
- public double getValor() { return 9.0; }
- }
- class PizzaBanana implements Pizza
- {
- public String getSabor() { return "Doce"; }
- public double getValor() { return 7.0; }
- }
- enum TipoFabricaPizza
- {
- PIZZAS_SALGADAS,
- PIZZAS_DOCES;
- }
- class FabricaDePizzaSalgada extends FabricaDePizza
- {
- public Pizza getPizza(TipoPizza tipo)
- {
- switch (tipo)
- {
- case CALABRESA: return new PizzaCalabresa();
- case FRANGO: return new PizzaFrango();
- default: return null;
- }
- }
- }
- class FabricaDePizzaDoce extends FabricaDePizza
- {
- public Pizza getPizza(TipoPizza tipo)
- {
- switch (tipo)
- {
- case BANANA: return new PizzaBanana();
- default: return null;
- }
- }
- }
- abstract class FabricaDePizza
- {
- public abstract Pizza getPizza(TipoPizza tipo);
- public static FabricaDePizza getFabrica(TipoFabricaPizza tipoFabrica)
- {
- switch (tipoFabrica)
- {
- case PIZZAS_SALGADAS: return new FabricaDePizzaSalgada();
- case PIZZAS_DOCES: return new FabricaDePizzaDoce();
- default: return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement