728x90
반응형
우리가 보통 Lombok이라는 의존성을 추가하여 Builder 클래스를 호출 하여 사용합니다. 이것을 직접 만들어 보도록 하겠습니다.
BuilderPattern
빌더패턴
빌더 패턴(Builder Pattern)은 객체 생성 패턴 중 하나로, 복잡한 객체의 생성 과정을 단계적으로 처리하면서 가독성과 유연성을 높이는 디자인 패턴입니다. 특히, 생성자나 팩토리 메서드의 파라미터가 많거나 객체를 단계적으로 초기화해야 하는 경우에 효과적입니다.
빌더 패턴의 특징
- 객체 생성의 분리: 객체의 생성 과정과 표현을 분리하여, 동일한 생성 절차를 통해 다양한 객체를 생성할 수 있습니다.
- 가독성 향상: 빌더를 활용하면 코드가 메서드 체이닝 방식으로 읽히기 때문에 가독성이 높아집니다.
- 불변성 유지: 빌더 패턴을 사용하면 생성된 객체가 불변(immutable) 상태를 유지할 수 있습니다.
코드예제
package java_design.ch01;
// 빌더 패턴 예제
public class Person {
private final String name; // 이름
private final int age; // 나이
// private 생성자: 외부에서 직접 호출할 수 없도록 제한
private Person(PersonBuilder builder) {
this.name = builder.name;
this.age = builder.age;
}
// 정적 내부 클래스: Builder 클래스
public static class PersonBuilder {
private String name;
private int age;
public PersonBuilder() {
// 기본 생성자
}
// 이름 설정 메서드
public PersonBuilder name(String name) {
this.name = name;
return this; // 메서드 체이닝 지원
}
// 나이 설정 메서드
public PersonBuilder age(int age) {
this.age = age;
return this;
}
// 최종적으로 Person 객체 생성
public Person build() {
return new Person(this);
}
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
public static void main(String[] args) {
// 빌더 패턴을 이용한 객체 생성
Person person = new Person.PersonBuilder()
.name("홍길동")
.age(25)
.build();
System.out.println(person);
}
}
빌더 패턴의 장점
가독성: 객체 생성 시 코드가 자연스럽게 읽히며, 직관적입니다.
Person person = new Person.PersonBuilder() .name("홍길동") .age(25) .build();
유연성: 생성자에 모든 필드를 전달하지 않아도 되고, 필요한 값만 설정할 수 있습니다.
Person person = new Person.PersonBuilder() .name("이순신") .build();
유지보수 용이성: 새로운 필드가 추가되어도 기존 코드를 수정하지 않고 빌더에만 변경 사항을 반영하면 됩니다.
빌더 패턴을 사용하면 좋은 경우
- 매개변수가 많은 경우: 생성자에 많은 파라미터를 전달하면 가독성이 떨어질 수 있습니다. 빌더 패턴은 이를 개선합니다.
- 객체의 단계적 생성이 필요한 경우: 객체를 생성하는 과정에서 여러 단계를 거쳐야 할 때 유용합니다.
- 불변 객체 생성: 생성 후 변경할 수 없는 객체를 생성할 때 적합합니다.
728x90
반응형
'Java&Spring' 카테고리의 다른 글
[디자인 패턴] 전략 패턴 [Strategy Pattern] (0) | 2025.01.16 |
---|---|
[bankApp05] 화면구현하기1 (템플릿 가져오기 ) (0) | 2025.01.15 |
[Java] 모델링 (1) | 2025.01.14 |
댓글