👶 TypeScript

디자인 패턴 - 빌더 패턴(builder pattern)

개발자 린다씨 2023. 1. 17. 14:00
반응형

빌더 패턴(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
    }
}
  1. url이라는 비공개 변수(초깃값은 null)로 사용자가 설정한 URL을 추적합니다.
  2. 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()

이렇게 빌더 패턴을 완성했습니다.

반응형