Java
Builder pattern @Builder
조정밍
2022. 6. 29. 20:13
Builder 패턴
객체를 생성할 때 사용하는 패턴이다.
객체를 생성할 수 있는 빌더를 builder() 함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동 시켜 객체를 생성한다.
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class UserInfo {
private String name;
private int age;
}
빌더를 사용하는 이유
1. 생성자 파라미터가 많을 경우 가독성이 좋지 않다.
UserInfo userInfo = new UserInfo("홍길동", "19");
파라미터로 받아야 하는 값들이 많아질수록 각 값들이 어떤것을 의미하는지 확인하기 힘들다.
builder 패턴을 사용하면 각 파타미터가 무엇을 의미하는지 파악하기 쉽다.
UserInfo userInfo = UserInfo.builder()
.name("홍길동")
.age(19)
.build();
2. 어떤 값을 먼저 설정하든 상관없다.
생성자의 경우 정해진 순서대로 파라미터를 넣어주어야 한다.
하지만 Builder 패턴을 사용하면 필드의 이름으로 값을 설정하기 때문에 순서에 종속적이지 않다.
3. 필요한 데이터만 설정할 수 있다.
생성자나 정적 메소드를 이용하는 경우 필요하지 않은 파라미터에 더미값을 넣어주거나 해당 파라미터가 없는 생성자를 만들어 주어야 한다. 하지만 빌더를 사용하면 이를 동적으로 처리할 수 있다.
UserInfo userInfo = UserInfo.builder()
.name("홍길동")
.build();
4. 유연성을 확보할 수 있음
UserInfo 객체에 userId를 추가한다면 기존 코드를 모두 수정해야 하는 문제가 있지만, 빌터 패턴 사용시 기존 코드의 영향을 주지 않는다.
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class UserInfo {
private String name;
private int age;
private String userId;
}
UserInfo userInfo = new UserInfo("홍길동", "19");