안녕하세요, BTC 블랙아웃입니다!
오늘은 디자인 패턴 중에서 객체의 생성 패턴에 속하는 빌더 패턴(Builder Pattern)에 대해 알아보겠습니다.
빌더 패턴은 복잡한 객체의 생성을 간결하고 명확하게 할 수 있도록 도와줍니다.
1. 빌더 패턴이란?
빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 분리하여, 동일한 생성 절차에서 다른 표현 결과를 만들 수 있게 하는 디자인 패턴입니다.
2. 왜 빌더 패턴을 사용하나요?
문제 상황
생성자에 많은 인자가 있을 때, 인자의 순서를 혼동하기 쉽습니다. 또한, 시간이 지나면서 객체의 생성 방식이 변할 경우 생성자의 인자가 늘어나거나 줄어들 수 있어 유지 보수가 어렵습니다.
해결 방안
빌더 패턴은 객체 생성의 복잡성을 해결하고, 명확하게 객체를 생성할 수 있도록 도와줍니다. Fluent API 형태로 제공되어, 읽기 쉽고 사용하기 편리합니다.
3. 빌더 패턴의 구현
예제: User 클래스
public class User {
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
private User(UserBuilder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.phone = builder.phone;
this.address = builder.address;
}
// getters ...
public static class UserBuilder {
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public UserBuilder phone(String phone) {
this.phone = phone;
return this;
}
public UserBuilder address(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
}
객체 생성 예제:
User user = new User.UserBuilder("BTC", "Blackout")
.age(25)
.phone("010-1234-5678")
.address("Seoul, Korea")
.build();
4. 장점과 단점
장점:
- 객체의 생성과 표현 방식을 분리하여 코드의 유연성과 가독성을 향상시킵니다.
- 불변성(Immutable) 객체를 생성하는 데 도움을 줍니다.
단점:
- Builder 클래스가 추가되므로 코드가 길어질 수 있습니다.
5. 결론
빌더 패턴은 복잡한 객체의 생성을 캡슐화하여 명확하고 유연하게 객체를 생성하는 데 도움을 줍니다. 복잡한 생성자 인자나 변경 가능성이 있는 객체 생성 시에 활용해보시길 바랍니다.
이상으로 빌더 패턴에 대한 포스팅을 마치겠습니다.
감사합니다!
'Programming' 카테고리의 다른 글
[Java] 상태 패턴(State Pattern)이란? (0) | 2023.09.27 |
---|---|
[Mybatis] resultMap과 resultType (0) | 2023.09.27 |
정규표현식 (0) | 2023.09.15 |
Go 언어 기초 문법 이해하기 (0) | 2023.09.15 |
[Java] 싱글톤 패턴의 활용과 한계 (0) | 2023.09.01 |
댓글