diff --git a/value-object/src/main/java/com/iluwatar/value/object/App.java b/value-object/src/main/java/com/iluwatar/value/object/App.java index f28e86bbe..012f93b74 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/App.java +++ b/value-object/src/main/java/com/iluwatar/value/object/App.java @@ -1,12 +1,24 @@ package com.iluwatar.value.object; /** - * App Class. + * A Value Object are objects which follow value semantics rather than reference semantics. This + * means value objects' equality are not based on identity. Two value objects are equal when they + * have the same value, not necessarily being the same object.. + * + * Value Objects must override equals(), hashCode() to check the equality with values. + * Value Objects should be immutable so declare members final. + * Obtain instances by static factory methods. + * The elements of the state must be other values, including primitive types. + * Provide methods, typically simple getters, to get the elements of the state. + * A Value Object must check equality with equals() not == + * + * For more specific and strict rules to implement value objects check the rules from Stephen + * Colebourne's term VALJO : http://blog.joda.org/2014/03/valjos-value-java-objects.html + * */ public class App { /** - * main method. - * A Value Object must check equality with equals() not ==
+ * * This practice creates three HeroStats(Value object) and checks equality between those. */ public static void main(String[] args) { @@ -15,7 +27,7 @@ public class App { HeroStat statC = HeroStat.valueOf(5, 1, 8); System.out.println(statA.toString()); - + System.out.println("Is statA and statB equal : " + statA.equals(statB)); System.out.println("Is statA and statC equal : " + statA.equals(statC)); } diff --git a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java index e7dd1edd1..9a3e2e4bf 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java +++ b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java @@ -1,13 +1,7 @@ package com.iluwatar.value.object; /** - * HeroStat is a Value Object. following rules are from Stephen Colebourne's term VALJO(not the - * entire rule set) from : http://blog.joda.org/2014/03/valjos-value-java-objects.html
- * Value Objects must override equals(), hashCode() to check the equality with values.
- * Value Objects should be immutable so declare members final. Obtain instances by static factory - * methods.
- * The elements of the state must be other values, including primitive types.
- * Provide methods, typically simple getters, to get the elements of the state.
+ * HeroStat is a value object * * {@link http://docs.oracle.com/javase/8/docs/api/java/lang/doc-files/ValueBased.html} */