공통으로 사용될 수 있는 특정한 기능들을 모듈화
프로그램을 설계할 때 발생했던 문제점
→ 객체 간의 상호 관계 등 이용해 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
(하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있음)
데이터베이스 연결 모듈에 사용
const URL = 'mongodb://localhost:27017/test'
const createConnection = url => ({"url" : url})
class DB {
constructor(url) {
if (!DB.instance) {
DB.instance = createConnection(url)
}
return DB.instance
}
connect() {
return this.instance
}
}
const a = new DB(URL)
const b = new DB(URL)
console.log(a === b)// true
(+) 인스턴스 생성할 때 드는 비용 ↓
(-) 의존성(종속성) ↑
(-) TDD(Test Driven Development)
자바스크립트