.
본문 바로가기
디자인패턴

싱글톤 패턴 (singleton pattern)

by 와칸다개발자 2021. 9. 16.
싱글톤 패턴은 메모리 위에서 인스턴스가 하나임을 보장하는 디자인 패턴이다. 

 

장점

1. 하나의 인스턴스를 보장함으로 메모리 리소스 절약

2. db 커넥션 및 로그 등 사용

 

단점

1. 멀티 쓰레드 , 멀티 프로세스 상황에서의 동시성 이슈

2. 하나의 인스턴스가 많은 작업을 할 경우

 

간단하게 싱글톤을 구현해보자

 

class Single {
private static instance : Single;
private readonly name :string;
private constructor(n:string){
this.name = n;
}
public static getInstance(){
if(!Single.instance){
Single.instance = new Single('king');
}
return Single.instance;
}
}
const obj1 :Single = Single.getInstance();
const obj2 :Single = Single.getInstance();
const obj3 :Single = Single.getInstance();
console.log(obj1 === obj2 && obj2 === obj3 && obj3 === obj1); // true

 

생성자 함수는 private로 선언하여 new 키워드를 이용한 생성을 막는다.

 

인스턴스 멤버변수와 getInstance() 메소드를 static으로 생성하여

 

클래스 인스턴스를 생성하지 않고도 사용할 수 있도로 한다. 

 

다음은 자바스크립트로 구현한 싱글톤이다.

 

const single = (function(){
const instance;
const name = 'king';
function initialize(){
return{
name : name,
getName:function(){
return this.name;
}
};
}
return{
getInstance:function(){
if(!instance){
instance = initialize();
}
return instance;
}
}
}
})();
const first = singleton.getInstance();
const second = singleton.getInstance();
first === second // true;

 

 

 

'디자인패턴' 카테고리의 다른 글

퍼사드 패턴(Facade Pattern)  (0) 2022.02.04
팩토리 패턴1 (factory pattern)  (0) 2021.09.24
전략패턴 (Strategy Pattern )  (0) 2021.09.21
데코레이터 패턴(Decorator Pattern)  (0) 2021.09.21

댓글