1) Removed warning from test case. 2) Made implementation of App more understandable.
This commit is contained in:
		| @@ -38,25 +38,40 @@ package com.iluwatar.factory.method; | ||||
|  */ | ||||
| public class App { | ||||
|  | ||||
|   private final Blacksmith blacksmith; | ||||
|    | ||||
|   /** | ||||
|    * Creates an instance of <code>App</code> which will use <code>blacksmith</code> to manufacture  | ||||
|    * the weapons for war. | ||||
|    * <code>App</code> 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; | ||||
|     Weapon weapon; | ||||
|     // Lets go to war with Orc weapons | ||||
|     App app = new App(new OrcBlacksmith()); | ||||
|     app.manufactureWeapons(); | ||||
|      | ||||
|     blacksmith = new OrcBlacksmith(); | ||||
|     // Lets go to war with Elf weapons | ||||
|     app = new App(new ElfBlacksmith()); | ||||
|     app.manufactureWeapons(); | ||||
|   } | ||||
|    | ||||
|   private void manufactureWeapons() { | ||||
|     Weapon weapon; | ||||
|     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); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -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()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user