less than 1 minute read

Builder 패턴

인스턴스를 생성하고나서, 생성자로 생성하면 가독성이 떨어집니다, 인자 순서를 신경쓰지않아도 됩니다, 불필요한 생성자 만들지않습니다.

다운로드

안쓸 시에 불편한 점

1. 오버로딩으로 사용할 만한 경우마다 생성자를 생성한다.
2. 하나의 생성자에서 파라미터를 그냥 null 로 넘긴다.

예제

User.java

@NoArgsConstructor
@Getter
@Entity
public class User {

    @Id
    @Column(name = "user_no")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String userId;
    private String name;
    private String email;

    @Builder
    public User(String userId, String name, String email) {
        this.userId = userId;
        this.name = name;
        this.email = email;
    }
}

UserRepositoryTest.java

    @Test
    public void 사용자입력_테스트() {
        // given
        User user = userRepository.save(User.builder()
                .name("이어진")
                .email("eojin312@naver.com")
                .loginId(LOGIN_ID)
                .loginPassword("1234")
                .profileImage("a.jpg")
                .birthYear(2002)
                .gender("M")
                .build()
        );

        // when
        User newUser = userRepository.findByLoginId(LOGIN_ID);

        // then
        Assertions.assertEquals(LOGIN_ID, newUser.getLoginId());
    }

Categories:

Updated: