diff --git a/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java b/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java index 8cc5254d6..a4e2ffa87 100644 --- a/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java +++ b/private-class-data/src/main/java/com/iluwatar/privateclassdata/App.java @@ -1,34 +1,38 @@ -package com.iluwatar.privateclassdata; - -/** - * - * The Private Class Data design pattern seeks to reduce exposure of attributes - * by limiting their visibility. It reduces the number of class attributes by - * encapsulating them in single data object. It allows the class designer to - * remove write privilege of attributes that are intended to be set only during - * construction, even from methods of the target class. - * - * In the example we have normal Stew class with some ingredients given in - * constructor. Then we have methods to enumerate the ingredients and to taste - * the stew. The method for tasting the stew alters the private members of the - * stew class. - * - * The problem is solved with the Private Class Data pattern. We introduce - * ImmutableStew class that contains StewData. The private data members of - * Stew are now in StewData and cannot be altered by ImmutableStew methods. - * - */ -public class App { - - public static void main( String[] args ) { - // stew is mutable - Stew stew = new Stew(1, 2, 3, 4); - stew.mix(); - stew.taste(); - stew.mix(); - - // immutable stew protected with Private Class Data pattern - ImmutableStew immutableStew = new ImmutableStew(2, 4, 3, 6); - immutableStew.mix(); - } -} +package com.iluwatar.privateclassdata; + +/** + * + * The Private Class Data design pattern seeks to reduce exposure of attributes + * by limiting their visibility. It reduces the number of class attributes by + * encapsulating them in single data object. It allows the class designer to + * remove write privilege of attributes that are intended to be set only during + * construction, even from methods of the target class. + *
+ * In the example we have normal {@link Stew} class with some ingredients given in + * constructor. Then we have methods to enumerate the ingredients and to taste + * the stew. The method for tasting the stew alters the private members of the + * {@link Stew} class. + * + * The problem is solved with the Private Class Data pattern. We introduce + * {@link ImmutableStew} class that contains {@link StewData}. The private data members of + * {@link Stew} are now in {@link StewData} and cannot be altered by {@link ImmutableStew} methods. + * + */ +public class App { + + /** + * Program entry point + * @param args command line args + */ + public static void main( String[] args ) { + // stew is mutable + Stew stew = new Stew(1, 2, 3, 4); + stew.mix(); + stew.taste(); + stew.mix(); + + // immutable stew protected with Private Class Data pattern + ImmutableStew immutableStew = new ImmutableStew(2, 4, 3, 6); + immutableStew.mix(); + } +} diff --git a/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java b/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java index 8ba8c4b80..92fc9b46a 100644 --- a/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java +++ b/private-class-data/src/test/java/com/iluwatar/privateclassdata/AppTest.java @@ -1,14 +1,19 @@ -package com.iluwatar.privateclassdata; - -import org.junit.Test; - -import com.iluwatar.privateclassdata.App; - -public class AppTest { - - @Test - public void test() { - String[] args = {}; - App.main(args); - } -} +package com.iluwatar.privateclassdata; + +import org.junit.Test; + +import com.iluwatar.privateclassdata.App; + +/** + * + * Application test + * + */ +public class AppTest { + + @Test + public void test() { + String[] args = {}; + App.main(args); + } +}