From f64ba22c64cfc2f7c1340b692b25b183722c1489 Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Wed, 10 Feb 2016 17:38:15 +0530 Subject: [PATCH] 1) Removed warning from test case. 2) Made implementation of App more understandable. --- .../java/com/iluwatar/factory/method/App.java | 33 ++++++++++++++----- .../factory/method/FactoryMethodTest.java | 2 +- 2 files changed, 25 insertions(+), 10 deletions(-) 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..32b9c82f2 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 + */ + 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());