빌더 패턴
빌더 패턴이란
- 다양한 방법의 객체 생성 및 초기화 방법을 단순하고 유연하게 구현할 수 있도록 해주는 생성 패턴이다.
- 복잡한 객체의 생성을 차근차근 단계적으로 만들 수 있도록 해준다.
- 빌더 패턴은 세 가지로 구성된다.
- 빌더 인터페이스
- 객체 생성에 필요한 단계를 정의하는 인터페이스
- 빌더 클래스
- 실제로 객체를 생성하는 빌더 인터페이스의 구현체
- 디렉터 클래스
- 빌더 인터페이스와 구현체를 사용해 객체를 생성해 활용하는 애
- 빌더 인터페이스
구현하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface PersonBuilder {
PersonBuilder name(String name);
PersonBuilder age(int age);
PersonBuilder gender(Gender gender);
PersonBuilder height(int height);
PersonBuilder weight(int weight);
Person build();
}
- Person 객체를 만드는 방법을 정의한 빌더 인터페이스이다.
- 각 필드를 구성하는 메서드는 메서드 체이닝을 할 수 있도록 리턴값이 PersonBuilder이다.
- 원하는 필드를 구성하고 마지막으로 완성 객체를 받을 수 있는 build() 메서드이다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class PersonBuilderImpl implements PersonBuilder {
private String name;
private int age;
private Gender gender;
private int height;
private int weight;
@Override
public PersonBuilder name(String name) {
this.name = name;
return this;
}
@Override
public PersonBuilder age(int age) {
this.age = age;
return this;
}
@Override
public PersonBuilder gender(Gender gender) {
this.gender = gender;
return this;
}
@Override
public PersonBuilder height(int height) {
this.height = height;
return this;
}
@Override
public PersonBuilder weight(int weight) {
this.weight = weight;
return this;
}
@Override
public Person build() {
return new Person(name, age, gender, height, weight);
}
}
- 빌더 인터페이스의 구현체인 빌더 클래스이다.
- 실질적으로 객체를 생성하는 역할을 담당한다.
1
2
3
4
5
6
7
8
9
10
11
PersonBuilder personBuilder = new PersonBuilderImpl();
personBuilder.name("박현근");
personBuilder.age(20);
personBuilder.gender(Gender.MALE)
.height(185)
.weight(80);
Person park = personBuilder.build();
- 실제로 빌더 패턴을 사용해 객체를 만드는 코드이다.
- 한 줄씩 메서드를 호출해도 되고, 메서드 체이닝을 사용해 한 번에 여러 개의 필드를 채울 수도 있다.
- 마지막에 build()를 호출해 차곡차곡 쌓은 필드들을 실제 객체로 리턴 받아 사용할 수 있다.
This post is licensed under CC BY 4.0 by the author.