반응형
빌더 패턴(builder pattern)
빌더 패턴(builder pattern)으로 객체의 생성과 객체 구현 방식을 분리할 수 있습니다.
제이쿼리(JQuery)나 ES6의 Map, Set 등의 자료구조를 사용해 봤다면 빌더 패턴에 친숙할 것입니다.
빌더 패턴은 아래처럼 구성됩니다.
new RequestBuilder()
.setURL('/users')
.setMethod('get')
.setData({ firstName: 'Cozy'})
.send()
RequestBuilder를 구현하는 방법은 간단합니다.
우선 클래스 뼈대를 정의합니다.
class RequestBuilder{}
첫 번째로 .setURL 메서드를 추가합니다.
class RequestBuilder{
private url: string | null = null //①
setURL(url: string): this { // ②
this.url = url
return this
}
}
- url이라는 비공개 변수(초깃값은 null)로 사용자가 설정한 URL을 추적합니다.
- setURL의 반환 타입은 this입니다. 즉, 사용자가 setURL을 호출한 특정 RequestBuilder의 인스턴스입니다.
이제 나머지 메서드를 차례로 추가합니다.
class RequestBuilder{
private data: object | null = null
private url: string | null = null
private method: 'get' | 'post' | null = null
setMethod(method: 'get' | 'post'): this {
this.method = method
return this
}
setData(data: object): this {
this.data = data
return this
}
setURL(url: string): this {
this.url = url
return this
}
send(){
// 블라블라
}
}
new RequestBuilder()
.setURL('/users')
.setMethod('get')
.setData({ firstName: 'Cozy'})
.send()
이렇게 빌더 패턴을 완성했습니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
가변성 (0) | 2023.01.17 |
---|---|
서브 타입과 슈퍼 타입 (0) | 2023.01.17 |
디자인 패턴 - 팩토리 패턴(factory pattern) (0) | 2023.01.17 |
final 클래스 흉내 내기 (0) | 2023.01.17 |
데코레이터(decorator) (0) | 2023.01.16 |