싱글톤 패턴은 메모리 위에서 인스턴스가 하나임을 보장하는 디자인 패턴이다.
장점
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 |
댓글