diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/Controller.java b/delegation/src/main/java/com/iluwatar/delegation/simple/Controller.java new file mode 100644 index 000000000..487b827eb --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/Controller.java @@ -0,0 +1,14 @@ +package com.iluwatar.delegation.simple; + +public abstract class Controller { + + private Printer printer; + + public Controller(Printer printer) { + this.printer = printer; + } + + protected Printer getPrinter() { + return printer; + } +} diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java b/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java new file mode 100644 index 000000000..1bc0dd13d --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/Printer.java @@ -0,0 +1,6 @@ +package com.iluwatar.delegation.simple; + +public interface Printer { + + void print(final String message); +} diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java b/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java new file mode 100644 index 000000000..5fb8742a3 --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/PrinterController.java @@ -0,0 +1,13 @@ +package com.iluwatar.delegation.simple; + +public class PrinterController extends Controller implements Printer { + + public PrinterController(Printer printer) { + super(printer); + } + + @Override + public void print(String message) { + getPrinter().print(message); + } +} diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java new file mode 100644 index 000000000..76afd5309 --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/CanonPrinter.java @@ -0,0 +1,12 @@ +package com.iluwatar.delegation.simple.printers; + +import com.iluwatar.delegation.simple.Printer; + +public class CanonPrinter implements Printer { + + @Override + public void print(String message) { + System.out.println("Canon Printer : " + message); + } + +} diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java new file mode 100644 index 000000000..cc371fd68 --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/EpsonPrinter.java @@ -0,0 +1,12 @@ +package com.iluwatar.delegation.simple.printers; + +import com.iluwatar.delegation.simple.Printer; + +public class EpsonPrinter implements Printer{ + + @Override + public void print(String message) { + System.out.println("Epson Printer : " + message); + } + +} diff --git a/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HPPrinter.java b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HPPrinter.java new file mode 100644 index 000000000..7c57ee43b --- /dev/null +++ b/delegation/src/main/java/com/iluwatar/delegation/simple/printers/HPPrinter.java @@ -0,0 +1,12 @@ +package com.iluwatar.delegation.simple.printers; + +import com.iluwatar.delegation.simple.Printer; + +public class HPPrinter implements Printer { + + @Override + public void print(String message) { + System.out.println("HP Printer : " + message); + } + +} diff --git a/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java b/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java new file mode 100644 index 000000000..fc8d277a7 --- /dev/null +++ b/delegation/src/test/java/com/iluwatar/delegation/simple/AppTest.java @@ -0,0 +1,24 @@ +package com.iluwatar.delegation.simple; + +import com.iluwatar.delegation.simple.printers.CanonPrinter; +import com.iluwatar.delegation.simple.printers.EpsonPrinter; +import com.iluwatar.delegation.simple.printers.HPPrinter; + +public class AppTest { + + public static final String MESSAGE_TO_PRINT = "hello world"; + + public static void main(String args[]) { + Printer hpPrinter = new HPPrinter(); + Printer canonPrinter = new CanonPrinter(); + Printer epsonPrinter = new EpsonPrinter(); + + PrinterController hpPrinterController = new PrinterController(hpPrinter); + PrinterController canonPrinterController = new PrinterController(canonPrinter); + PrinterController epsonPrinterController = new PrinterController(epsonPrinter); + + hpPrinterController.print(MESSAGE_TO_PRINT); + canonPrinterController.print(MESSAGE_TO_PRINT); + epsonPrinterController.print(MESSAGE_TO_PRINT); + } +}