1 package se.citerus.dddsample.domain.shared.experimental;
2
3 /**
4 * A value object.
5 *
6 */
7 public interface ValueObject<T> {
8
9 /**
10 * Value objects compare by the values of their attributes, they don't have an identity.
11 *
12 * @param other The other value object.
13 * @return <code>true</code> if the given value object's and this value object's attributes are the same.
14 */
15 boolean sameValueAs(T other);
16
17 /**
18 * Value objects can be freely copied.
19 *
20 * @return A safe, deep copy of this value object.
21 */
22 T copy();
23
24 }