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