DesignPattern
Builder pattern
Dexlee
2022. 4. 23. 20:04
1. 나오게 된 배경
생성자를 통해서 객체를 생성하는데 어려움이 있어 생긴 패턴이다.
여기서 어려움이란, 파라미터에 각 필드를 직접 적는데 있어 개발자가 실수할 일이 커지고, 각 필드를 직접 접근해 가독성이 좋지 못하기 때문이다.
2. 빌더 패턴이란?
객체를 생성해준다.
3. 내부 원리.
static inner class로 외부 클래스의 필드를 메서드로 만들어 객체를 생성해준다.
4. 왜 사용하는지?
가장 큰 이유는 각 필드를 메서드로 만들어 접근이 편하고, 가독성이 좋기 때문이다. 이러한 이유로 개발자가 실수할 일도 적어진다.
또한, 유연성이 좋다. 모든 필드를 채울 필요 없이, 필요한 필드만 채워 객체를 생성할 수 있다.
public class Outer {
private int id;
private String name;
public Outer(Builder builder) {
this.id = builder.id;
this.name = builder.name;
}
public static class Builder {
private int id;
private String name;
public Builder id(int id) {
this.id = id;
return this;
}
public Builder name(String name) {
this.name = name;
return this;
}
public Outer build() {
return new Outer(this);
}
}
@Override
public String toString() {
return "Outer{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
public class Main {
public static void main(String[] args) {
Outer outer = new Outer.Builder()
.id(10)
.build();
System.out.println(outer);
}
}
위에 보는 것처럼 id값만 필요하다면, id 메서드에만 접근해 객체를 생성할 수 있다. 이러한 유연성과 메서드로 접근해 높은 가독성을 가지고 있어서 builder 패턴을 사용하는 것이다.