1. Singleton Pattern
- 인스턴스가 단 한 개만 생성되도록 의도한 패턴이다.
- 이 패턴의 주 목적은 단일 객체가 전역적으로 접근 가능하도록 하고, 이 객체를 통해 중앙화된 관리를 제공하는 것이다.
- 하나의 인스턴스만 필요한 경우, 특정 데이터를 여러 인스턴스에서 공유해야하는 경우 등의 상황에서 사용된다.
- 앱의 상태를 관리하는 클래스를 생성할 때 사용할 수 있다.
https://devmoony.tistory.com/43
2-1) 클로저를 이용한 함수 예시
const Singleton = (function () {
// 인스턴스 변수
let instance;
// 싱글톤 객체 생성
function createInstance() {
// 객체 생성 및 초기화
const object = new Object("Only one instance.");
return object;
}
return {
// 싱글톤 인스턴스 반환 메서드
getInstance: function () {
if (!instance) {
instance = createInstance();
}
return instance;
},
};
})();
// 테스트
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true
2-2) 클래스 문법 예시
class Singleton {
private data:string;
private static instance:Singleton;
constructor() {
if (!Singleton.instance) {
// 인스턴스가 없을 경우에만 인스턴스를 생성
this.data = "Only one instance.";
Singleton.instance = this;
}
return Singleton.instance;
}
getData() {
return this.data;
}
static getInstance() {
if(this.instance) return this.instance
this.instance = new Singleton();
return this.instance;
}
}
// 테스트
const instance1 = new Singleton();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true
console.log(instance1.getData()); // "I am the instance."
console.log(instance2.getData()); // "I am the instance."
*싱글톤 패턴은 new 키워드를 사용하지 못하도록 constructor를 private하게 관리하기도 한다. (getInstance 메소드로만 인스턴스에 접근 가능)
-> 정적(static) 메소드만 존재하는 클래스를 만들 때 사용하기도 함.
-> 객체를 리턴하는 함수를 팩토리 함수라 부르는데, 클래스를 팩토리 함수처럼 사용할 때 이러한 패턴을 이용하기도 함.
'Algorithms and Data Structures > patterns' 카테고리의 다른 글
[알고리즘] Frequency Counters (0) | 2022.07.11 |
---|