JS 에서 객체를 생성하는 패턴 중 하나인 공개 생성자 패턴은 객체를 생성하는 시점에만 객체 내부의 동작 혹은 상태를 변경할 수 있도록 노출하는 패턴입니다.
const promise = new Promise((resolve, reject) => {
...
});
JS 에서 공개 생성자의 대표적인 예시는 Promise 입니다.
생성자의 인자로 함수를 받아들이는데 이러한 함수를 executor 라 하고, 객체의 내부 상태를 변경할 수 있는 resolve 와 reject 함수를 외부에 노출합니다. 이렇게 객체를 생성할 때만 resolve 와 reject 에 접근할 수 있고, 객체가 생성된 이후에는 다른 부분에서 resolve 와 reject 를 호출해 객체 내부 상태를 변경할 수 없습니다.
const fs = require('fs');
const promise = new Promise((resolve, reject) => {
fs.readFile('tmp.txt', 'utf-8', (err, result) => {
if (err) reject(err);
else resolve(result);
});
});
promise.then(result => {
console.info(result);
}).catch(err => {
console.error(err);
});
Promise 객체 생성의 간단한 예시입니다.
resolve 와 reject 함수는 내부 구현에 의해 fs 모듈에 의한 파일 읽기가 끝난 후 호출 되며 이렇게 생성된 promise 객체의 외부 어딘가에선 resolve, reject 를 호출할 수 없습니다.
공개 생성자패턴은 JS 내에서도 Promise 외에는 특별히 다른 예시를 찾기가 어렵습니다.
관련해서 읽어보면 좋을만한 글을 링크하며 마무리합니다.
'Backend > 디자인 패턴' 카테고리의 다른 글
Strategy Pattern (전략 패턴) (0) | 2022.10.24 |
---|---|
Adapter Pattern (어댑터 패턴) (0) | 2022.10.08 |
Decorator Pattern (데코레이터 패턴) (0) | 2022.10.01 |
Proxy Pattern (프록시 패턴) (0) | 2022.09.25 |
Factory Pattern (팩토리 패턴) (0) | 2022.09.11 |