빌더 패턴(Builder pattern)이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다.
출처: 위키백과 - 빌더패턴
빌더 패턴은 아래와 같이 구현할 수 있다.
public class User {
private int id;
private String name;
private String email;
private String nickname;
// getter 생략 (setter는 생성하지 않는다)
// private 생성자
private User(Builder builder) {
this.name = builder.name;
this.email = builder.email;
this.nickname = builder.nickname;
}
// User클래스 안에 선언한 정적 내부 클래스
public static class Builder {
private int id;
private String name;
private String email;
private String nickname;
// name과 email은 필수로 입력해야 하는 필드
public Builder(String name, String email) {
this.name = name;
this.email = email;
}
public Builder nickname(String nickname) {
this.nickname = nickname;
return this;
}
public User build() {
return new User(this);
}
}
}
그리고 이런식으로 사용한다.
User user = new User.Builder("Oladipo", "vo4@miami.heat")
.nickname("feathery")
.build();
빌더 패턴을 사용하는 이유?
- 필수 및 선택인자가 많아질수록 생성자 방식보다 가독성이 좋다.
- 자바빈 패턴(setter를 이용하는 방식)보다 안전하다. - setter가 없기 때문에 객체를 변경할 수 없음 (불변성을 보장)
+) Builder Pattern을 빠르게 구현하기
사실 빌더 패턴을 알게된 것도 롬복 때문이다. 롬복의 @Builder
어노테이션을 이용해 쉽고 간편하게 빌더 패턴을 구현할 수 있다.
public class User {
private int id;
private String name;
private String email;
private String nickname;
@Builder
public User(String name, String email, String nickname) {
this.name = name;
this.email = email;
this.nickname = nickname;
}
}
+) References
'STUDY > Java' 카테고리의 다른 글
Java | Excel 파일 생성하기 (0) | 2021.04.12 |
---|---|
Java | 정규식으로 특정 문자 사이 값 추출하기 (0) | 2021.04.09 |
Java | MultipartFile image width와 height 알아내기 (0) | 2021.03.25 |
Java | 객체를 XML로 쉽게 변환하기 (JAXB, javax.xml) (0) | 2021.03.24 |
Java | java 11 설치하기 (0) | 2020.12.15 |