1. 程式人生 > >值對象模式【其他模式】

值對象模式【其他模式】

void hashcode shc get all public equal int ati

值對象模式

public class ValueObject {
    /**
     *  值對象模式:值對象的相等性和引用無關,只有當兩個值對象的屬性值都相等時它們即相等。
     *  1)值對象必須覆蓋 equals 和 hashcode 方法。
     *  2)值對象的屬性必須是 final 修飾,不允許修改。
     *  3)通過靜態方法來創建對象。
     *  4)允許使用 get 方法訪問值對象內部的屬性。
     */
    @Test
    public void all() {
        final User u1 = User.of("zxd", 29);
        final User u2 = User.of("zxd", 29);
        assertEquals(u1, u2);
    }
}

@EqualsAndHashCode
@Getter
class User {
    private final String name;
    private final int age;

    private User(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public static final User of(String name, int age) {
        return new User(name, age);
    }
}

值對象模式【其他模式】