Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Ejemplo de implementacion del patron Decorator.
- //Extraido del libro: Head First Design Pattens
- //************* COMPONENTS ************************************************
- abstract class Emparedado {
- String description = "Unknown Emparedado";
- public String getDescription() {
- return description;
- }
- public abstract double cost();
- }
- class Burger extends Emparedado {
- public Burger() {
- description = "Burger";
- }
- public double cost() {
- return 1.99;
- }
- }
- class Sandwich extends Emparedado {
- public Sandwich() {
- description = "Sandwich";
- }
- public double cost() {
- return .89;
- }
- }
- //************* DECORATORS ************************************************
- abstract class IngredientDecorator extends Emparedado {
- public abstract String getDescription();
- }
- class Papas extends IngredientDecorator {
- Emparedado emparedado;
- public Papas(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Papas";
- }
- public double cost() {
- return .20 + emparedado.cost();
- }
- }
- class Jamon extends IngredientDecorator {
- Emparedado emparedado;
- public Jamon(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Jamon";
- }
- public double cost() {
- return .15 + emparedado.cost();
- }
- }
- class Queso extends IngredientDecorator {
- Emparedado emparedado;
- public Queso(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Queso";
- }
- public double cost() {
- return .10 + emparedado.cost();
- }
- }
- class Pepinillo extends IngredientDecorator {
- Emparedado emparedado;
- public Pepinillo(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Pepinillo";
- }
- public double cost() {
- return .10 + emparedado.cost();
- }
- }
- class Tocino extends IngredientDecorator {
- Emparedado emparedado;
- public Tocino(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Tocino";
- }
- public double cost() {
- return .10 + emparedado.cost();
- }
- }
- class Catsup extends IngredientDecorator {
- Emparedado emparedado;
- public Catsup(Emparedado emparedado) {
- this.emparedado = emparedado;
- }
- public String getDescription() {
- return emparedado.getDescription() + ", Catsup";
- }
- public double cost() {
- return .10 + emparedado.cost();
- }
- }
- public class AppAdapter {
- public static void main(String args[]) {
- Emparedado emparedado;
- emparedado = new Burger();
- System.out.println(emparedado.getDescription()
- + " $" + emparedado.cost());
- emparedado = new Papas(emparedado);
- emparedado = new Jamon(emparedado);
- emparedado = new Queso(emparedado);
- emparedado = new Pepinillo(emparedado);
- emparedado = new Tocino(emparedado);
- emparedado = new Catsup(emparedado);
- System.out.println(emparedado.getDescription()
- + " $" + emparedado.cost());
- emparedado = new Sandwich();
- System.out.println(emparedado.getDescription()
- + " $" + emparedado.cost());
- emparedado = new Papas(emparedado);
- emparedado = new Jamon(emparedado);
- emparedado = new Queso(emparedado);
- emparedado = new Pepinillo(emparedado);
- emparedado = new Tocino(emparedado);
- emparedado = new Catsup(emparedado);
- System.out.println(emparedado.getDescription()
- + " $" + emparedado.cost());
- }
- }
- //EJERCICIO: Restaurant
- //Implementar componentes: Hamburguesa y Sandwich
- //Implementar ingredientes: jamon, queso, pepinillos, tocino, catsup, papas.
- //Implementar 2 ejemplos de hamburguesa y 2 de sandwich con ingredientes diferentes.
- //Incluir el costo total basado en la suma de costos de cada ingrediente.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement