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
}