diff --git a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java index 15265c0d4..aae396f1d 100644 --- a/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java +++ b/abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java @@ -52,14 +52,6 @@ public class App { setArmy(factory.createArmy()); } - ElfKingdomFactory getElfKingdomFactory() { - return new ElfKingdomFactory(); - } - - OrcKingdomFactory getOrcKingdomFactory() { - return new OrcKingdomFactory(); - } - King getKing(final KingdomFactory factory) { return factory.createKing(); } @@ -107,17 +99,13 @@ public class App { App app = new App(); System.out.println("Elf Kingdom"); - KingdomFactory elfKingdomFactory; - elfKingdomFactory = app.getElfKingdomFactory(); - app.createKingdom(elfKingdomFactory); + app.createKingdom(new ElfKingdomFactory()); System.out.println(app.getArmy().getDescription()); System.out.println(app.getCastle().getDescription()); System.out.println(app.getKing().getDescription()); System.out.println("\nOrc Kingdom"); - KingdomFactory orcKingdomFactory; - orcKingdomFactory = app.getOrcKingdomFactory(); - app.createKingdom(orcKingdomFactory); + app.createKingdom(new OrcKingdomFactory()); System.out.println(app.getArmy().getDescription()); System.out.println(app.getCastle().getDescription()); System.out.println(app.getKing().getDescription()); diff --git a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java index 5eb083deb..216f0443a 100644 --- a/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java +++ b/abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java @@ -36,8 +36,8 @@ public class AbstractFactoryTest { @Before public void setUp() { - elfFactory = app.getElfKingdomFactory(); - orcFactory = app.getOrcKingdomFactory(); + elfFactory = new ElfKingdomFactory(); + orcFactory = new OrcKingdomFactory(); } @Test diff --git a/factory-method/src/main/java/com/iluwatar/factory/method/App.java b/factory-method/src/main/java/com/iluwatar/factory/method/App.java index 4056f335c..cd7a6e6e7 100644 --- a/factory-method/src/main/java/com/iluwatar/factory/method/App.java +++ b/factory-method/src/main/java/com/iluwatar/factory/method/App.java @@ -38,25 +38,40 @@ package com.iluwatar.factory.method; */ public class App { + private final Blacksmith blacksmith; + + /** + * Creates an instance of App which will use blacksmith to manufacture + * the weapons for war. + * App is unaware which concrete implementation of {@link Blacksmith} it is using. + * The decision of which blacksmith implementation to use may depend on configuration, or + * the type of rival in war. + * @param blacksmith a non-null implementation of blacksmith + */ + public App(Blacksmith blacksmith) { + this.blacksmith = blacksmith; + } + /** * Program entry point * * @param args command line args */ public static void main(String[] args) { - Blacksmith blacksmith; + // Lets go to war with Orc weapons + App app = new App(new OrcBlacksmith()); + app.manufactureWeapons(); + + // Lets go to war with Elf weapons + app = new App(new ElfBlacksmith()); + app.manufactureWeapons(); + } + + private void manufactureWeapons() { Weapon weapon; - - blacksmith = new OrcBlacksmith(); weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR); System.out.println(weapon); weapon = blacksmith.manufactureWeapon(WeaponType.AXE); System.out.println(weapon); - - blacksmith = new ElfBlacksmith(); - weapon = blacksmith.manufactureWeapon(WeaponType.SHORT_SWORD); - System.out.println(weapon); - weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR); - System.out.println(weapon); } } diff --git a/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java b/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java index 40515d4c9..2f8d1c9bb 100644 --- a/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java +++ b/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java @@ -93,7 +93,7 @@ public class FactoryMethodTest { * @param expectedWeaponType expected WeaponType of the weapon * @param clazz expected class of the weapon */ - private void verifyWeapon(Weapon weapon, WeaponType expectedWeaponType, Class clazz) { + private void verifyWeapon(Weapon weapon, WeaponType expectedWeaponType, Class clazz) { assertTrue("Weapon must be an object of: " + clazz.getName(), clazz.isInstance(weapon)); assertEquals("Weapon must be of weaponType: " + clazz.getName(), expectedWeaponType, weapon.getWeaponType());