Commented the example.
This commit is contained in:
		| @@ -1,13 +1,33 @@ | ||||
| package com.iluwatar; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * 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(); | ||||
|     } | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| package com.iluwatar; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Immutable stew class, protected with Private Class Data pattern | ||||
|  * | ||||
|  */ | ||||
| public class ImmutableStew { | ||||
|  | ||||
| 	private StewData data; | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| package com.iluwatar; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Mutable stew class | ||||
|  * | ||||
|  */ | ||||
| public class Stew { | ||||
| 	 | ||||
| 	private int numPotatoes; | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| package com.iluwatar; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Stew ingredients | ||||
|  * | ||||
|  */ | ||||
| public class StewData { | ||||
|  | ||||
| 	private int numPotatoes; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user