티스토리 뷰
Builder Pattern 이란?
복잡한 단계를 거쳐야 생성되는 객체의 구현을
서브 클래스에게 넘겨주는 패턴
구현
public class Member {
private String name;
private String email;
private String gender;
private int age;
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getGender() {
return gender;
}
public int getAge() {
return age;
}
// Member의 서브 클래스 Builder
public static class Builder {
// 필수 인자
private String name;
private String email;
// 선택 인자
private String gender = null;
private int age = 0;
// 필수 인자들은 생성자에 추가한다.
public Builder(String name, String email) {
this.name = name;
this.email = email;
}
// 여기서의 this는 Builder 인스턴스이다.
// return this를 해줌으로써 pipeline으로 구현 가능하다.
public Builder gender(String gender) {
this.gender = gender;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
// 마지막으로 build()로 Member 생성자
// 파라미터에 builder를 넘겨 Member를 생성한다.
public Member build() {
return new Member(this);
}
}
// builder를 파라미터로 받는 private한 Member 생성자
// private이기 때문에 외부에서 호출이 불가능 하다.
private Member(Builder builder) {
this.name = builder.name;
this.email = builder.email;
this.gender = builder.gender;
this.age = builder.age;
}
}
팁 Tip
위처럼 구현하지말고 👍Lombok의 @builder를 사용하자
'Computer Science > Design pattern' 카테고리의 다른 글
| [Design Pattern] 템플릿 메서드 패턴 (0) | 2021.08.24 |
|---|---|
| [생성 패턴]: Singleton Pattern (0) | 2021.01.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- Spring
- JPA
- Vue.js
- 템플릿 메서드 패턴
- effetive java
- 맥북 키보드 딜레이
- 코테
- SOLID원칙
- 팀즈 느려짐
- 코딩테스트
- 포트충돌
- frontend
- 알고리즘
- ES6
- 맥 포트 죽이기
- Mackbook
- 프로그래머스
- javascript
- 팀즈
- HTTP body
- http header
- vue
- Design Pattern
- 맥 팀즈 캐시 삭제
- 이펙티브 자바
- http
- Backend
- ORM
- 디자인패턴
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함