Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
- }
- }
Add Comment
Please, Sign In to add comment