Merge branch 'javadoc'
This commit is contained in:
		| @@ -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. | ||||
|  * <p> | ||||
|  * 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(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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); | ||||
| 	}	 | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user