Work on the DI example. Added second Wizard with injected Tobacco.
This commit is contained in:
		@@ -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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -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();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
package com.iluwatar;
 | 
			
		||||
 | 
			
		||||
public class SecondBreakfastTobacco extends Tobacco {
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
package com.iluwatar;
 | 
			
		||||
 | 
			
		||||
public class SimpleWizard implements Wizard {
 | 
			
		||||
	
 | 
			
		||||
	private OldTobyTobacco tobacco = new OldTobyTobacco();
 | 
			
		||||
	
 | 
			
		||||
	public void smoke() {
 | 
			
		||||
		tobacco.smoke(this);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -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()));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user