프론트엔드 디자인 패턴 - #2 싱글톤 패턴(Singleton pattern)

Noma·2024년 6월 25일
0
post-custom-banner

싱글톤 패턴

특정 클래스의 인스턴스가 오직 하나만 존재하도록 보장하는 디자인 패턴. 주로 상태를 공유하거나 공통된 리소스를 관리할 때 사용된다.

예제 코드

class Singleton{
	constructor(){
    	if(Singleton.instance){
        	return Singleton.instance;
        }
      	this.#data={};
        Singleton.instance=this;
    }
	getData(){
    	return this.data;
    }
  	setData(key,value){
    	this.data[key]=value;
    }
}
// 사용 예시
const singleton1=new Singleton();
const singleton2=new Singleton();

singleton1.setData('name','Singleton Pattern');
console.log(singleton2.getData()); // {name:'Singleton Pattern'}
console.log(singleton1===singleton2); // true

이미 인스턴스가 존재하는 경우 그 인스턴스를 반환하고, 그렇지 않은 경우 새로운 인스턴스를 생성한다.

장점

  1. 전역 접근성 : 애플리케이션 어디에서나 접근할 수 있는 단일 인스턴스를 제공하여, 상태나 리소스의 일관성을 유지할 수 있다.
  2. 메모리 절약: 단일 인스턴스만을 유지하므로 불필요한 메모리 사용을 줄일 수 있다.
  3. 제어된 인스턴스 생성: 인스턴스 생성을 제어함으로써 특정 클래스의 인스턴스가 하나만 존재하도록 보장할 수 있다.

단점

싱글톤 객체가 사용된 코드에서는 단위 테스트 수행이 어려워진다. 단일 인스턴스가 애플리케이션 코드의 여러 영역에 걸쳐 공유되기 때문에, 작은 기능 단위로 나눠 서로 독립적으로 수행되어야 하는 테스트를 구현하는데 어려움이 있다.

참고

https://seongjin.me/woowacourse-three-design-patterns-in-javascript/

profile
오히려 좋아
post-custom-banner

0개의 댓글