빌더 패턴이란? Node.js와 함께 배우는 구현과 활용법
2025. 2. 13. 19:05ㆍTech Insights/Design Pattern
반응형
빌더 패턴이란?
빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정과 표현 방법을 분리해 유연하게 객체를 구성할 수 있는 생성 패턴입니다. 이 패턴은 유연한 구성, 가독성 향상, 중복 감소 등의 이점을 제공합니다.
빌더 패턴의 특징
- 단계별 구성: 메서드 체이닝으로 직관적인 객체 생성 가능
- 유연성 확보: 선택적 속성을 자유롭게 추가
- 가독성 향상: 복잡한 생성자보다 명확한 코드 작성
빌더 패턴이 사용되는 경우와 이점
매개변수가 많은 객체 | 선택적 속성 처리 및 명확한 구성 가능 |
반복적인 유사 객체 생성 | 동일한 빌더 재사용으로 코드 중복 감소 |
복잡한 객체 구성 | 단계별 설정으로 가독성과 관리성 향상 |
빌더 패턴 구현 방법 (Node.js 예제)
class ConfigBuilder {
private host!: string;
private port!: number;
private dbUrl!: string;
private enableLogging!: boolean;
setHost(host: string): this {
this.host = host; return this;
}
setPort(port: number): this {
this.port = port; return this;
}
setDatabaseUrl(url: string): this {
this.dbUrl = url; return this;
}
enableLogging(enable: boolean): this {
this.enableLogging = enable; return this;
}
build(): Config {
return new Config(this.host, this.port, this.dbUrl, this.enableLogging);
}
}
const config = new ConfigBuilder()
.setHost('localhost')
.setPort(3000)
.setDatabaseUrl('mongodb://localhost/dev')
.enableLogging(true)
.build();
문제점 및 해결방법
- 코드 복잡성: 설정 메서드가 많아지면 코드가 길어짐
예시: 여러 메서드를 호출해야 하여 코드가 복잡해질 수 있음:
const user = new UserBuilder()
.setName('Henry')
.setAge(30)
.setEmail('henry@example.com')
.build();
- 간단한 객체에 오버헤드: 간단한 속성만 필요한 객체에 불필요한 빌더 코드가 추가됨:
const simpleUser = new UserBuilder().setName('Alice').build();
해결방법:
- 간단한 객체는 생성자 사용: 3~4개 이하 속성은 생성자로 충분
- 복잡한 객체만 빌더 적용: 유연성과 확장성이 필요한 경우만 사용
- 혼합 패턴 사용: 필수 속성은 생성자, 선택 속성은 빌더로 구성:
class User {
constructor(public name: string, public email: string) {}
}
class UserBuilder {
private user: User;
private age?: number;
constructor(name: string, email: string) {
this.user = new User(name, email);
}
setAge(age: number): this { this.age = age; return this; }
build() { return { user: this.user, age: this.age }; }
}
const user = new UserBuilder('Henry', 'henry@example.com')
.setAge(30)
.build();
결론: 빌더 패턴은 언제 사용해야 할까?
- 매개변수가 많고 선택적 속성이 있는 경우: 생성자보다 빌더가 유연성 제공
- 유사한 객체를 반복적으로 생성할 때: 빌더를 재사용해 중복 코드 감소
- 복잡한 객체 구성이 필요한 경우: 단계별 설정으로 가독성과 관리성 확보
- 다양한 구성 옵션이 필요한 객체: 환경 설정, API 요청 등의 구성에 적합
빌더 패턴은 복잡한 객체 생성에는 적합하지만, 간단한 객체에는 오버 엔지니어링으로 보일 수있습니다.
빌더 패턴을 실제로 사용할 때, 적합도와 생성자와 함꼐 사용하는 것을 고려해볼 수 있습니다.
반응형
'Tech Insights > Design Pattern' 카테고리의 다른 글
팩토리 메서드 패턴이란? Node.js와 함께 배우는 구현과 활용법 (0) | 2025.02.12 |
---|---|
싱글톤 패턴이란? Node.js와 함께 배우는 구현과 활용법 (0) | 2025.02.03 |