diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java index 659cc4a33..7b62678ba 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java @@ -1,7 +1,11 @@ package com.iluwatar.factorykit; public class App { - + /** + * Program entry point. + * + * @param args @param args command line args + */ public static void main(String[] args) { WeaponFactory factory = WeaponFactory.factory(builder -> { builder.add(WeaponType.SWORD, Sword::new); diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java index 4e9daee55..980a2219f 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java @@ -1,7 +1,7 @@ package com.iluwatar.factorykit; /** - * Interface representing weapon + * Interface representing weapon. */ public interface Weapon { } diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java index df29e6284..e83a997c6 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java @@ -5,14 +5,26 @@ import java.util.function.Consumer; import java.util.function.Supplier; /** - * Functional interface that represents factory kit. Instance created locally gives an opportunity to strictly define - * which objects types the instance of a factory would be able to create. Factory is just a placeholder for builders with - * create method to initialize new objects. + * Functional interface, an example of the factory-kit design pattern. + *
Instance created locally gives an opportunity to strictly define + * which objects types the instance of a factory will be able to create. + *
Factory is a placeholder for {@link Builder}s + * with {@link WeaponFactory#create(WeaponType)} method to initialize new objects. */ public interface WeaponFactory { + /** + * Creates an instance of the given type. + * @param name representing enum of an object type to be created. + * @return new instance of a requested class implementing {@link Weapon} interface. + */ Weapon create(WeaponType name); + /** + * Creates factory - placeholder for specified {@link Builder}s. + * @param consumer for the new builder to the factory. + * @return factory with specified {@link Builder}s + */ static WeaponFactory factory(Consumer consumer) { HashMap> map = new HashMap<>(); consumer.accept(map::put); diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java index 89a17523a..ac542048d 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java @@ -1,5 +1,8 @@ package com.iluwatar.factorykit; +/** + * Enumerates {@link Weapon} types + */ public enum WeaponType { SWORD, AXE, BOW, SPEAR }