HelloWorld com Design Patterns

1 resposta
josenaldo

Pra quem acha que não dá pra complicar mais...

interface Printer {
   void print(Message message);
}

class Message {
   
   private String message;

   public Message(String message) {
      this.message = message;
   }

   public void print(Printer printer) {
      printer.print(this);
   }

   public String toString() {
      return message;
   }
}

abstract class AbstractPrinterFactory {
   
   public static AbstractPrinterFactory getFactory() {
      return new SystemOutPrinterFactory();
   }

   public abstract Printer getPrinter();
}

class SystemOutPrinterFactory extends AbstractPrinterFactory {

   public Printer getPrinter() {
      return new SystemOutPrinter();
   }

}

class SystemOutPrinter implements Printer {
   
   public void print(Message message) {

      System.out.println(message);

   }

}

public class HelloWorld {

   public static void main(String[] args) {
      Message message = new Message("Hello, World!");
      AbstractPrinterFactory factory = AbstractPrinterFactory.getFactory();
      Printer printer = factory.getPrinter();
      message.print(printer);
   }

}

Fonte:[url]http://desciclo.pedia.ws/wiki/Java[/url]

1 Resposta

1112

Absurdo! Como que Printer depende da implementação concreta de Message? Este código deve ser refatorado para que Message seja uma mensagem, assim eu posso ter mensagens provenientes de arquivos, e-mails ou sinais de fumaça (não se esqueça do RemoteDescriptor para os sinais de fumaça).

Criado 7 de fevereiro de 2007
Ultima resposta 7 de fev. de 2007
Respostas 1
Participantes 2