Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.lang.*;
- import java.io.*;
- class Ideone
- {
- public interface Bolo {
- public String obterNome();
- public double obterCusto();
- public String obterIngredientes();
- }
- public static class BoloSimples implements Bolo {
- @Override
- public String obterNome() {
- return "Bolo";
- }
- @Override
- public double obterCusto() {
- return 15;
- }
- @Override
- public String obterIngredientes() {
- return "Massa de Bolo";
- }
- }
- public static abstract class BoloDecorator implements Bolo {
- protected final Bolo decBolo;
- public BoloDecorator(Bolo b) {
- this.decBolo = b;
- }
- public String obterNome() {
- return decBolo.obterNome();
- }
- public double obterCusto() {
- return decBolo.obterCusto();
- }
- public String obterIngredientes() {
- return decBolo.obterIngredientes();
- }
- }
- static class BoloChocolate extends BoloDecorator {
- public BoloChocolate(Bolo b) {
- super(b);
- }
- public String obterNome() {
- return super.obterNome() + " Chocolate";
- }
- public double obterCusto() {
- return super.obterCusto() + 3.5;
- }
- public String obterIngredientes() {
- return super.obterIngredientes() + ", Chocolate";
- }
- }
- static class BoloSprinkles extends BoloDecorator {
- public BoloSprinkles(Bolo b) {
- super(b);
- }
- public String obterNome() {
- return super.obterNome() + " Sprinkles";
- }
- public double obterCusto() {
- return super.obterCusto() + 1;
- }
- public String obterIngredientes() {
- return super.obterIngredientes() + ", Sprinkles";
- }
- }
- public static void printInfo(Bolo b) {
- System.out.println("Nome: " + b.obterNome() + "\nCusto: " + b.obterCusto() + "\nIngredientes: " + b.obterIngredientes() + "\n---------------------------");
- }
- public static void main (String[] args)
- {
- Bolo b = new BoloSimples();
- printInfo(b);
- b = new BoloChocolate(b);
- printInfo(b);
- b = new BoloSprinkles(b);
- printInfo(b);
- b = new BoloSimples();
- b = new BoloSprinkles(b);
- printInfo(b);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement