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(); + }