diff --git a/builder/src/main/java/com/iluwatar/App.java b/builder/src/main/java/com/iluwatar/App.java index 5d455e95d..1eea20c10 100644 --- a/builder/src/main/java/com/iluwatar/App.java +++ b/builder/src/main/java/com/iluwatar/App.java @@ -2,6 +2,22 @@ package com.iluwatar; import com.iluwatar.Hero.HeroBuilder; +/** + * + * This is the Builder pattern variation as described by + * Joshua Bloch in Effective Java 2nd Edition. + * + * We want to build Hero objects, but its construction + * is complex because of the many parameters needed. To + * aid the user we introduce HeroBuilder class. HeroBuilder + * takes the minimum parameters to build Hero object in + * its constructor. After that additional configuration + * for the Hero object can be done using the fluent + * HeroBuilder interface. When configuration is ready + * the build method is called to receive the final Hero + * object. + * + */ public class App { public static void main( String[] args ) diff --git a/builder/src/main/java/com/iluwatar/Hero.java b/builder/src/main/java/com/iluwatar/Hero.java index 1cc8f16df..e728fab7a 100644 --- a/builder/src/main/java/com/iluwatar/Hero.java +++ b/builder/src/main/java/com/iluwatar/Hero.java @@ -1,5 +1,10 @@ package com.iluwatar; +/** + * + * The class with many parameters. + * + */ public class Hero { private final Profession profession; @@ -72,7 +77,12 @@ public class Hero { this.weapon = builder.weapon; this.armor = builder.armor; } - + + /** + * + * The builder class. + * + */ public static class HeroBuilder { private final Profession profession; @@ -113,7 +123,5 @@ public class Hero { public Hero build() { return new Hero(this); } - } - }