33 lines
1.4 KiB
Java
Raw Normal View History

package com.iluwatar.value.object;
/**
2016-02-03 23:33:40 +09:00
* 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
*/
2016-01-28 22:39:50 +09:00
public class App {
/**
* This practice creates three HeroStats(Value object) and checks equality between those.
*/
2016-01-28 22:39:50 +09:00
public static void main(String[] args) {
HeroStat statA = HeroStat.valueOf(10, 5, 0);
HeroStat statB = HeroStat.valueOf(10, 5, 0);
HeroStat statC = HeroStat.valueOf(5, 1, 8);
System.out.println(statA.toString());
2016-02-03 23:33:40 +09:00
System.out.println("Is statA and statB equal : " + statA.equals(statB));
System.out.println("Is statA and statC equal : " + statA.equals(statC));
2016-01-28 22:39:50 +09:00
}
}