빌더 패턴(Builder Pattern) 이란 무엇인가?
빌더 패턴은 객체를 생성하는 복잡한 과정을 캡슐화하여, 객체의 생성과 표현을 분리하는 디자인 패턴입니다. 빌더 패턴을 이용하면 객체의 생성과 표현을 독립적으로 관리할 수 있으며, 객체 생성 과정을 단계적으로 구현할 수 있습니다.
JavaScript로 빌더 패턴 구현하기
빌더 패턴을 구현하기 위해서는 빌더 패턴으로 만들 클래스가 필요합니다. 따라서 클래스를 먼저 만들어보겠습니다.
빌더 패턴으로 만들 Person 클래스
예를 들어, 다음과 같은 Person 클래스가 있다고 가정해보겠습니다.
class Person {
constructor(name, age, gender, height, weight, address, phone) {
this.name = name;
this.age = age;
this.gender = gender;
this.height = height;
this.weight = weight;
this.address = address;
this.phone = phone;
}
introduce() {
console.log(`My name is ${this.name}, and I'm ${this.age} years old. I'm a ${this.gender}.`);
}
}
위 클래스는 이름(name), 나이(age), 성별(gender), 키(height), 몸무게(weight), 주소(address), 전화번호(phone)를 가지는 객체를 생성하는 클래스입니다. 이 클래스는 매개변수가 많기 때문에, 객체 생성 코드가 복잡해질 수 있습니다. 이를 해결하기 위해 빌더 패턴으로 만들어진 PersonBuilder을 만들어보도록 하겠습니다.
Person 객체를 만들어내는 PersonBuilder
아래 클래스는 Person 클래스를 이용하여 객체를 생성하는 빌더 클래스입니다. PersonBuilder 클래스는 이름을 매개변수로 받아서, Person 클래스의 인스턴스를 생성합니다. 이후, setAge, setGender, setHeight, setWeight, setAddress, setPhone 메서드를 이용하여, Person 클래스의 인스턴스의 속성을 설정합니다. 각 메서드는 this를 반환하여, 메서드 체이닝을 가능하게 합니다. 마지막으로 build 메서드는 생성된 Person 클래스의 인스턴스를 반환합니다.
class PersonBuilder {
constructor(name) {
this.person = new Person();
this.person.name = name;
}
setAge(age) {
this.person.age = age;
return this;
}
setGender(gender) {
this.person.gender = gender;
return this;
}
setHeight(height) {
this.person.height = height;
return this;
}
setWeight(weight) {
this.person.weight = weight;
return this;
}
setAddress(address) {
this.person.address = address;
return this;
}
setPhone(phone) {
this.person.phone = phone;
return this;
}
build() {
return this.person;
}
}
PersonBuilder로 Person객체 생성하기
이제 PersonBuilder 클래스를 이용하여 객체를 생성해보겠습니다.
let person = new PersonBuilder('홍길동')
.setAge(32)
.setGender('male')
.setHeight(180)
.setWeight(80)
.setAddress('경기도 고양시')
.setPhone('123-456-7890')
.build();
person.introduce();
위 코드에서 PersonBuilder 클래스를 이용하여, 이름이 '홍길동'인 Person 객체를 생성합니다. 이후, setAge, setGender, setHeight, setWeight, setAddress, setPhone 메서드를 이용하여, Person 클래스의 인스턴스의 속성을 설정합니다. 각 메서드는 this를 반환하여, 메서드 체이닝을 가능하게 합니다. 마지막으로 build 메서드를 호출하여, 생성된 Person 클래스의 인스턴스를 반환합니다.
빌더 패턴의 의의
빌더 패턴을 이용하여 객체를 생성하면, 객체 생성 코드의 가독성과 유지보수성이 높아집니다. 또한, 빌더 클래스를 이용하여 다양한 객체를 생성할 수 있으며, 객체 생성 과정을 단계적으로 구현할 수 있습니다. 또한, 필요한 속성만 설정할 수 있기 때문에, 객체 생성 시 불필요한 속성을 설정할 필요가 없습니다.
빌더 패턴은 객체 생성과 표현을 분리하여, 객체 생성 코드를 쉽게 관리할 수 있도록 도와주는 디자인 패턴입니다. JavaScript에서도 빌더 패턴을 이용하여 객체를 생성할 수 있으며, 객체 생성 코드를 쉽게 관리할 수 있습니다.
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 팩토리 패턴과 추상 팩토리 패턴에 대해 알아보고 차이점 분석하기 : JavaScript 예제 포함 (0) | 2023.02.19 |
---|