package com.iluwatar.factory.method;

/**
 * 
 * In Factory Method we have an interface ({@link Blacksmith}) with a method for
 * creating objects ({@link Blacksmith#manufactureWeapon}). The concrete subclasses 
 * ({@link OrcBlacksmith}, {@link ElfBlacksmith}) then override the method to produce 
 * objects of their liking.
 * 
 */
public class App {

	/**
	 * Program entry point
	 * @param args command line args
	 */
	public static void main(String[] args) {
		Blacksmith blacksmith;
		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);
	}
}

@@ -46,10 +46,477 @@
 %0A * 
-In
+The Factory Method is a creational design pattern which uses factory methods to deal %0A * with the problem of creating objects without specifying the exact class of object %0A * that will be created. This is done by creating objects via calling a factory %0A * method either specified in an interface and implemented by child classes, or implemented %0A * in a base class and optionally overridden by derived classes%E2%80%94rather than by calling a %0A * constructor.%0A * %3Cp%3E%0A * In this
  Fac
@@ -527,16 +527,24 @@
  Method 
+example 
 we have 

Improve Factory Method Javadoc