Advertisement
Guest User

Decorator_Pattern_Exemple

a guest
May 3rd, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.36 KB | None | 0 0
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Ideone
  6. {
  7.     public interface Bolo {
  8.         public String obterNome();
  9.         public double obterCusto();
  10.         public String obterIngredientes();
  11.     }
  12.    
  13.     public static class BoloSimples implements Bolo {
  14.         @Override
  15.         public String obterNome() {
  16.             return "Bolo";
  17.         }
  18.        
  19.         @Override
  20.         public double obterCusto() {
  21.             return 15;
  22.         }
  23.    
  24.         @Override
  25.         public String obterIngredientes() {
  26.             return "Massa de Bolo";
  27.         }
  28.     }
  29.    
  30.     public static abstract class BoloDecorator implements Bolo {
  31.         protected final Bolo decBolo;
  32.    
  33.         public BoloDecorator(Bolo b) {
  34.             this.decBolo = b;
  35.         }
  36.        
  37.         public String obterNome() {
  38.             return decBolo.obterNome();
  39.         }
  40.    
  41.         public double obterCusto() {
  42.             return decBolo.obterCusto();
  43.         }
  44.    
  45.         public String obterIngredientes() {
  46.             return decBolo.obterIngredientes();
  47.         }
  48.     }
  49.    
  50.     static class BoloChocolate extends BoloDecorator {
  51.        
  52.         public BoloChocolate(Bolo b) {
  53.             super(b);
  54.         }
  55.        
  56.         public String obterNome() {
  57.             return super.obterNome() + " Chocolate";
  58.         }
  59.    
  60.         public double obterCusto() {
  61.             return super.obterCusto() + 3.5;
  62.         }
  63.    
  64.         public String obterIngredientes() {
  65.             return super.obterIngredientes() + ", Chocolate";
  66.         }
  67.     }
  68.    
  69.     static class BoloSprinkles extends BoloDecorator {
  70.        
  71.         public BoloSprinkles(Bolo b) {
  72.             super(b);
  73.         }
  74.        
  75.         public String obterNome() {
  76.             return super.obterNome() + " Sprinkles";
  77.         }
  78.    
  79.         public double obterCusto() {
  80.             return super.obterCusto() + 1;
  81.         }
  82.    
  83.         public String obterIngredientes() {
  84.             return super.obterIngredientes() + ", Sprinkles";
  85.         }
  86.     }
  87.    
  88.     public static void printInfo(Bolo b) {
  89.         System.out.println("Nome: " + b.obterNome() + "\nCusto: " + b.obterCusto() + "\nIngredientes: " + b.obterIngredientes() + "\n---------------------------");
  90.     }
  91.    
  92.     public static void main (String[] args)
  93.     {
  94.         Bolo b = new BoloSimples();
  95.         printInfo(b);
  96.        
  97.         b = new BoloChocolate(b);
  98.         printInfo(b);
  99.        
  100.         b = new BoloSprinkles(b);
  101.         printInfo(b);
  102.        
  103.         b = new BoloSimples();
  104.         b = new BoloSprinkles(b);
  105.         printInfo(b);
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement