디자인 패턴 중 싱글톤 패턴을 자바스크립트(JavaScript)로 코드로 구현해보면서 이해할 예정이다.
싱글톤 패턴이란 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 여러 개의 개별적인 인스턴스를 만드는 것이 아닌, 하나의 클래스를 기반으로 하나의 인스턴스를 만드는 데에 사용한다.
자바스크립트는 객체를 생성하면 같은 내용이라도 메모리의 주소 값이 달라 어떠한 객체와도 같지 않다.
let obj1 = {
a : 1
}
let obj2 = {
a :1
}
console.log(obj1 == obj2) // false
//싱글톤 패턴
class Singleton{
constructor(){
if(!Singleton.instance){
Singleton.instance = this;
}
return Singleton.instnce;
}
getInstance(){
return this.instance;
}
}
const singleton1 = new Singleton();
const singleton2 = new Singleton();
console.log(singleton1 == singleton2)// true
위와 같이 singleton1 과 singleton2는 하나의 인스턴스를 가지게 된다.
하나의 인스턴스를 만들기 때문에 생성 비용을 절약할 수 있다.
실제로 데이터베이스에 사용하는 경우가 많다.
class Database{
constructor(){
if(!Database.instance){
this.connect();
Database.instance = this;
}
return Database.instance;
}
async connect() {
try
{
Database.insatance = await mysql.createConnection({
host: 호스트이름,
user: 유저이름,
passsowrd: 데이터베이스 비밀번호,
database: 데이터베이스이름,
});
console.log("데이터베이스에 연결 성공!");
} catch(err){
consol.log("데이터베이스에 연결 실패",err);
}
return this.instance;
}
}
const a = new Database();
const b = new Database();
console.log(a==b) //true
이런식으로 데이터베이스에 싱글톤 패턴을 적용해서 쿼리문을 사용하기도 한다.
좋은 글 감사합니다. 자주 방문할게요 :)