From b2bfdb1752d2eff2d1b7abf6e62a9ce8b08a3610 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Fri, 22 May 2015 23:37:42 +0300 Subject: [PATCH] Work on the DI example. Added second Wizard with injected Tobacco. --- .../main/java/com/iluwatar/AdvancedWizard.java | 15 +++++++++++++++ .../src/main/java/com/iluwatar/App.java | 7 +++++-- .../main/java/com/iluwatar/OldTobyTobacco.java | 7 +------ .../java/com/iluwatar/SecondBreakfastTobacco.java | 4 ++++ .../src/main/java/com/iluwatar/SimpleWizard.java | 10 ++++++++++ .../src/main/java/com/iluwatar/Tobacco.java | 7 ++++--- .../src/main/java/com/iluwatar/Wizard.java | 9 +++------ 7 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 dependency-injection/src/main/java/com/iluwatar/AdvancedWizard.java create mode 100644 dependency-injection/src/main/java/com/iluwatar/SecondBreakfastTobacco.java create mode 100644 dependency-injection/src/main/java/com/iluwatar/SimpleWizard.java diff --git a/dependency-injection/src/main/java/com/iluwatar/AdvancedWizard.java b/dependency-injection/src/main/java/com/iluwatar/AdvancedWizard.java new file mode 100644 index 000000000..31f3f05be --- /dev/null +++ b/dependency-injection/src/main/java/com/iluwatar/AdvancedWizard.java @@ -0,0 +1,15 @@ +package com.iluwatar; + +public class AdvancedWizard implements Wizard { + + private Tobacco tobacco; + + public AdvancedWizard(Tobacco tobacco) { + this.tobacco = tobacco; + } + + @Override + public void smoke() { + tobacco.smoke(this); + } +} diff --git a/dependency-injection/src/main/java/com/iluwatar/App.java b/dependency-injection/src/main/java/com/iluwatar/App.java index 5aef55e3e..fc5a4d67d 100644 --- a/dependency-injection/src/main/java/com/iluwatar/App.java +++ b/dependency-injection/src/main/java/com/iluwatar/App.java @@ -3,7 +3,10 @@ package com.iluwatar; public class App { public static void main( String[] args ) { - Wizard wizard = new Wizard(); - wizard.smoke(); + SimpleWizard simpleWizard = new SimpleWizard(); + simpleWizard.smoke(); + + AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco()); + advancedWizard.smoke(); } } diff --git a/dependency-injection/src/main/java/com/iluwatar/OldTobyTobacco.java b/dependency-injection/src/main/java/com/iluwatar/OldTobyTobacco.java index ec8417643..dca3084b1 100644 --- a/dependency-injection/src/main/java/com/iluwatar/OldTobyTobacco.java +++ b/dependency-injection/src/main/java/com/iluwatar/OldTobyTobacco.java @@ -1,9 +1,4 @@ package com.iluwatar; -public class OldTobyTobacco implements Tobacco { - - @Override - public void smoke() { - System.out.println(String.format("Smoking %s", this.getClass().getSimpleName())); - } +public class OldTobyTobacco extends Tobacco { } diff --git a/dependency-injection/src/main/java/com/iluwatar/SecondBreakfastTobacco.java b/dependency-injection/src/main/java/com/iluwatar/SecondBreakfastTobacco.java new file mode 100644 index 000000000..e785bd3b4 --- /dev/null +++ b/dependency-injection/src/main/java/com/iluwatar/SecondBreakfastTobacco.java @@ -0,0 +1,4 @@ +package com.iluwatar; + +public class SecondBreakfastTobacco extends Tobacco { +} diff --git a/dependency-injection/src/main/java/com/iluwatar/SimpleWizard.java b/dependency-injection/src/main/java/com/iluwatar/SimpleWizard.java new file mode 100644 index 000000000..8ed7ca730 --- /dev/null +++ b/dependency-injection/src/main/java/com/iluwatar/SimpleWizard.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class SimpleWizard implements Wizard { + + private OldTobyTobacco tobacco = new OldTobyTobacco(); + + public void smoke() { + tobacco.smoke(this); + } +} diff --git a/dependency-injection/src/main/java/com/iluwatar/Tobacco.java b/dependency-injection/src/main/java/com/iluwatar/Tobacco.java index 853a3c334..2c1cc1031 100644 --- a/dependency-injection/src/main/java/com/iluwatar/Tobacco.java +++ b/dependency-injection/src/main/java/com/iluwatar/Tobacco.java @@ -1,7 +1,8 @@ package com.iluwatar; -public interface Tobacco { +public abstract class Tobacco { - public void smoke(); - + public void smoke(Wizard wizard) { + System.out.println(String.format("%s smoking %s", wizard.getClass().getSimpleName(), this.getClass().getSimpleName())); + } } diff --git a/dependency-injection/src/main/java/com/iluwatar/Wizard.java b/dependency-injection/src/main/java/com/iluwatar/Wizard.java index 28278d2ae..6007c96a2 100644 --- a/dependency-injection/src/main/java/com/iluwatar/Wizard.java +++ b/dependency-injection/src/main/java/com/iluwatar/Wizard.java @@ -1,10 +1,7 @@ package com.iluwatar; -public class Wizard { +public interface Wizard { - private OldTobyTobacco tobacco = new OldTobyTobacco(); - - public void smoke() { - tobacco.smoke(); - } + void smoke(); + }