Skip to content

Commit bdacfe3

Browse files
committed
Added skeleton code for delegation pattern iluwatar#324
1 parent 30363cb commit bdacfe3

7 files changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.iluwatar.delegation.simple;
2+
3+
public abstract class Controller<T extends Printer> {
4+
5+
private Printer printer;
6+
7+
public Controller(Printer printer) {
8+
this.printer = printer;
9+
}
10+
11+
protected Printer getPrinter() {
12+
return printer;
13+
}
14+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.iluwatar.delegation.simple;
2+
3+
public interface Printer {
4+
5+
void print(final String message);
6+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.iluwatar.delegation.simple;
2+
3+
public class PrinterController extends Controller implements Printer {
4+
5+
public PrinterController(Printer printer) {
6+
super(printer);
7+
}
8+
9+
@Override
10+
public void print(String message) {
11+
getPrinter().print(message);
12+
}
13+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.iluwatar.delegation.simple.printers;
2+
3+
import com.iluwatar.delegation.simple.Printer;
4+
5+
public class CanonPrinter implements Printer {
6+
7+
@Override
8+
public void print(String message) {
9+
System.out.println("Canon Printer : " + message);
10+
}
11+
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.iluwatar.delegation.simple.printers;
2+
3+
import com.iluwatar.delegation.simple.Printer;
4+
5+
public class EpsonPrinter implements Printer{
6+
7+
@Override
8+
public void print(String message) {
9+
System.out.println("Epson Printer : " + message);
10+
}
11+
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.iluwatar.delegation.simple.printers;
2+
3+
import com.iluwatar.delegation.simple.Printer;
4+
5+
public class HPPrinter implements Printer {
6+
7+
@Override
8+
public void print(String message) {
9+
System.out.println("HP Printer : " + message);
10+
}
11+
12+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.iluwatar.delegation.simple;
2+
3+
import com.iluwatar.delegation.simple.printers.CanonPrinter;
4+
import com.iluwatar.delegation.simple.printers.EpsonPrinter;
5+
import com.iluwatar.delegation.simple.printers.HPPrinter;
6+
7+
public class AppTest {
8+
9+
public static final String MESSAGE_TO_PRINT = "hello world";
10+
11+
public static void main(String args[]) {
12+
Printer hpPrinter = new HPPrinter();
13+
Printer canonPrinter = new CanonPrinter();
14+
Printer epsonPrinter = new EpsonPrinter();
15+
16+
PrinterController hpPrinterController = new PrinterController(hpPrinter);
17+
PrinterController canonPrinterController = new PrinterController(canonPrinter);
18+
PrinterController epsonPrinterController = new PrinterController(epsonPrinter);
19+
20+
hpPrinterController.print(MESSAGE_TO_PRINT);
21+
canonPrinterController.print(MESSAGE_TO_PRINT);
22+
epsonPrinterController.print(MESSAGE_TO_PRINT);
23+
}
24+
}

0 commit comments

Comments
 (0)