728x90

도메인 모델 정의


회원정보 도메인은 데이터 구조상 무결성과 불변성을 가지고 있어야 한다.

@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class Membership {

    private String membershipId;
    private String name;
    private String email;
    private String address;
    private boolean isValid;
    private boolean isCorp;

 

1. @AllArgsConstructor의 사용 :

@AllArgsConstructor(access = AccessLevel.PRIVATE)은 클래스의 필드를 초기화하는 생성자를 자동으로 생성하고, private로 접근 수준을 지정하여 클래스 외부에서 직접 생성자를 호출하지 못하도록 막는다.

 

    @Value
    public static class MembershipId {
        public MembershipId(String value) {
            this.membershipId = value;
        }
        String membershipId;
    }
    @Value
    public static class MembershipName {
        public MembershipName(String value) {
            this.nameValue = value;
        }
        String nameValue;
    }
    @Value
    public static class MembershipAddress {
        public MembershipAddress(String value) {
            this.addressValue = value;
        }
        String addressValue;
    }
    @Value
    public static class MembershipEmail {
        public MembershipEmail(String value) {
            this.emailValue = value;
        }
        String emailValue;
    }
    @Value
    public static class MembershipIsValid {
        public MembershipIsValid(boolean value) {
            this.isValidValue = value;
        }
        boolean isValidValue;
    }
    @Value
    public static class MembershipIsCorp {
        public MembershipIsCorp(boolean value) {
            this.isCorpValue = value;
        }
        boolean isCorpValue;
    }

2. @Value로 내부 클래스 생성 :

불변성을 갖춘 값을 생성. 외부에서 사용할 수 있는 객체를 생성하고 읽을 수 있도록 한다.

 

    public static Membership generateMember(
            MembershipId membershipId,
            MembershipName membershipName,
            MembershipAddress membershipAddress,
            MembershipEmail membershipEmail,
            MembershipIsValid membershipIsValid,
            MembershipIsCorp membershipIsCorp
    ) {
        return new Membership(
                membershipId.membershipId,
                membershipName.nameValue,
                membershipAddress.addressValue,
                membershipEmail.emailValue,
                membershipIsValid.isValidValue,
                membershipIsCorp.isCorpValue
        );

    }

3.  generate 메서드:

generateMembership메서드는 정적 메서드로 외부에서 호출이 가능하다. 이 메서드를 통해 입력된 값을 사용하여, 새로운 Membership 객체를 생성한다. 즉, 이 객체를 통해 신규 회원 정보를 저장할 수 있다.

+ Recent posts