Notice
Recent Posts
Recent Comments
Link
나만의공간
🧱 자바 디자인 패턴 - 빌더 패턴 완전 정복 본문
✅ 빌더 패턴이란?
복잡한 객체를 단계적으로 생성할 수 있게 해주는 생성 패턴입니다.
- 생성자에 파라미터가 너무 많거나
- 어떤 속성은 필수, 어떤 속성은 옵션일 때
- 코드 가독성과 유지보수성을 높이고 싶을 때 유용합니다.
📌 언제 사용하나요?
- 생성자 파라미터가 너무 많아 순서가 헷갈릴 때
- 선택적 필드를 유연하게 설정하고 싶을 때
- 객체 생성 코드를 더 읽기 쉽게 만들고 싶을 때
😵 복잡한 생성자의 예
User user = new User("홍길동", 30, "서울", "010-1234-5678", true, "developer", "소개글");
이게 뭐가 뭔지 한눈에 잘 안 들어오죠?
😎 빌더 패턴 사용 예
User user = User.builder()
.name("홍길동")
.age(30)
.address("서울")
.phone("010-1234-5678")
.isActive(true)
.job("developer")
.bio("소개글")
.build();
어떤 값이 어떤 필드에 들어가는지 딱 보기 쉽게 표현할 수 있어요!
🔨 실무 예제: User 클래스에 빌더 패턴 적용
✅ User 클래스
public class User {
private String name;
private int age;
private String address;
private String phone;
private boolean isActive;
private String job;
private String bio;
private User(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
this.phone = builder.phone;
this.isActive = builder.isActive;
this.job = builder.job;
this.bio = builder.bio;
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private String name;
private int age;
private String address;
private String phone;
private boolean isActive;
private String job;
private String bio;
public Builder name(String name) { this.name = name; return this; }
public Builder age(int age) { this.age = age; return this; }
public Builder address(String address) { this.address = address; return this; }
public Builder phone(String phone) { this.phone = phone; return this; }
public Builder isActive(boolean isActive) { this.isActive = isActive; return this; }
public Builder job(String job) { this.job = job; return this; }
public Builder bio(String bio) { this.bio = bio; return this; }
public User build() {
return new User(this);
}
}
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + ", job=" + job + "'}";
}
}
✅ 클라이언트 코드 (사용 예)
public class Main {
public static void main(String[] args) {
User user = User.builder()
.name("홍길동")
.age(30)
.address("서울 강남구")
.phone("010-1234-5678")
.isActive(true)
.job("개발자")
.bio("자바 백엔드 개발자")
.build();
System.out.println(user);
}
}
✅ 출력 결과
User{name='홍길동', age=30, job='개발자'}
✅ 빌더 패턴의 장점
장점설명
| 가독성 ↑ | 어떤 값이 어떤 필드인지 명확히 보임 |
| 확장성 ↑ | 새로운 필드를 추가해도 기존 생성자 깨지지 않음 |
| 유연성 ↑ | 선택적 필드 설정이 쉬움 |
🛠 실무 팁: Lombok으로 빌더 패턴 쉽게 적용하기
Lombok 라이브러리를 사용하면 빌더 코드를 직접 작성하지 않아도 됩니다!
import lombok.Builder;
import lombok.ToString;
@Builder
@ToString
public class User {
private String name;
private int age;
private String job;
}
Lombok은 Spring Boot에서 DTO, API 응답 객체 등 다양한 곳에 활용됩니다.
코드를 줄이고, 실수도 줄일 수 있어요! 💡
'IT > JAVA' 카테고리의 다른 글
| 🧱 1. 싱글턴 패턴이란? (2) | 2025.05.30 |
|---|---|
| 🧱 1. 프로토타입 패턴이란? (0) | 2025.05.30 |
| 🧱 추상 팩토리 패턴(Abstract Factory Pattern) – 제품군을 세트로 만들고 싶을 때! (0) | 2025.05.30 |
| 💡 Java 디자인 패턴 시리즈: 팩토리 패턴 (Factory Pattern) 실무 예제로 배우기 (0) | 2025.05.30 |
| Java Stream 다양한 생성방법 (0) | 2024.03.08 |
Comments
