본문 바로가기

Web/JavaScript

[Design Pattern] 8.Builder Pattern

728x90
// 이전 방식
// 심지어 내가 쓰는 방식이네 ㅡㅜ

class Request {
  constructor(url, data, method) { 
    this.url = url; 
    this.method = method; 
    this.data = data; 
  } 
}

 

이렇게 코드를 작성하면 계속 데이터를 전달해줘야하는 문제가 생긴다.(동감동감)

 

const request = new Request('http://localhost', {}, method);

//이런식으로 생성해야만 했음

 

 

 

 

Builder Pattern 적용

 

class Request { 
  constructor() { 
    this.url = ''; 
    this.method = ''; 
    this.data = null; 
  } 
} 

class RequestBuilder { 
  constructor() { 
    this.request = new Request(); 
  } 
  forUrl(url) { 
    this.request.url = url; 
    return this; 
  } 
  
  useMethod(method) { 
    this.request.method = method; 
    return this; 
  } 
  
  setData(data) { 
    this.request.data = data; 
    return this; 
  } 
  
  build() { 
    return this.request; 
  } 
} 

let getRequest = new RequestBuilder() 
  .forUrl('https://blog.naver.com/pjt3591oo') 
  .useMethod('GET') 
  .build(); 
  
let postRequest = new RequestBuilder() 
    .forUrl('https://blog.naver.com/pjt3591oo') 
    .useMethod('POST') 
    .setData({ id: 'hg', password: 1234 }) 
    .build();
    
    
 
 // 단!!!! this 를 반환하여 체이닝 필요
728x90

'Web > JavaScript' 카테고리의 다른 글

[Generator] * 과 yield  (0) 2023.11.20
[Design Pattern] 9. Module Pattern  (0) 2023.11.19
[Design Pattern] 7.Prototype Pattern  (0) 2023.11.17
[Design Pattern] 6. Decorator Pattern  (0) 2023.11.16
[Design Pattern) 5.Command Pattern  (0) 2023.11.14