spring boot in action

도메인 디자인 하기

분리불안증후군 2018. 5. 1. 18:30

Domain 추가 - User: immutable 만들기

여기서 중요한 것은 getter로 만 접근 가능하도록 User class를 final로 만들기

package microservices.book.multiplication.domain;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@RequiredArgsConstructor
@Getter
@ToString
@EqualsAndHashCode
public final class User {
    private final String alias;

    protected User() {
        alias = null;
    }
}

Domain 추가

package microservices.book.multiplication.domain;

import lombok.*;

/**
 * Identifies the attempt from a {@link User} to solve a
 * {@link Multiplication}.
 */
@RequiredArgsConstructor
@Getter
@ToString
@EqualsAndHashCode
public final class MultiplicationResultAttempt {
    private final User user;
    private final Multiplication multiplication;
    private final int resultAttempt;

    MultiplicationResultAttempt() {
        user = null;
        multiplication = null;
        resultAttempt =- -1;
    }
}

MultiplicationResultAttempt도 immutable class

immutable class가 뭔가요?