Miscellaneous icons created by Pixel perfect - Flaticon
Singleton(싱글턴)?
- 일반적인 용어: "Single"에 하나를 의미하는 접미사 "ton"을 붙여서 "단독"의 의미를 강화한 단어.
ex) singleton (카드): 카드 한 장
singleton (사람): 자식이 없는 사람, 혹은 가족이 없는 개인.
- 프로그래밍 용어 Singleton pattern: 하나의 class(클래스)가 하나의 instance(인스턴스)만 갖는 것을 보장하는 디자인.
Singleton Pattern의 장점
- 하나의 class가 하나의 instance만 생성하도록 함으로써,
메모리 사용을 줄이고 시스템성능을 향상시킬 수 있다.
- instance가 하나뿐이니, 기억할 이름도 하나뿐이다.
즉 코드가 길어져도 관리 및 재사용이 쉽다.
- 테스트용 코드 생성에 좋다.
Typescript에서 Singleton pattern구현하기
class SingletonClass {
private _id: string;
private static instance: SingletonClass;
// id와 instance를 private로 선언, 이 클래스 내부에서만 접근 가능하다.
private constructor(id: string) {
this._id = id;
}
//instance의 생성중 초기화를 담당하는 costurctor를 private으로 선언했다
// 즉 instace의 초기화는 class 내부접근을 통해서만 이루어진다.
// const singletonclass = new Singletonclass("hello"); 로 instance 선언시,
// constructor에 접근이 불가능하므로 오류가 일어난다.
static getInstance(id: string) {
if (SingletonClass.instance) {
return this.instance;
}
this.instance = new SingletonClass(id);
return this.instance;
}
// getInstance를 static으로 선언함으로써, instance 생성전에
// getInstance를 호출 할 수있게 만들었다.
// 호출시 instance가 없을경우 새로 생성하여 초기화후 반환한다.
// 만약 instance가 존재할시 그 instance를 반환한다.
}
const singletonpattern = SingletonClass.getInstance("singleID");
console.log(singletonpattern.id);
3줄 요약
- singleton pattern이란 하나의 instance만 생성할 수 있도록 class를 정의하는 디자인 패턴이다.
- "private" 접근제어자로 "constructor"를 class 내부에서만 접근할 수 있게 설정한다.
-instance를 "new" 키워드로 직접 생성하는 것을 막는다. - "static" 접근제어자로 instance를 생성하는 getInstance 메서드를 정의한다.
-instance를 메서드를 통해 생성, 반환받게 한다.
'it공부 (개념) > javascript' 카테고리의 다른 글
Intersection type(인터섹션 타입) 개념 및 Typescript 예제 (0) | 2023.01.24 |
---|---|
interface(인터페이스) 개념 및 Typescript 예제 (0) | 2023.01.24 |
VSCODE에서 TypeScript 개발 준비하기 (0) | 2023.01.16 |
TypeScript(타입스크립트)? 간단하게 알아보기 (0) | 2023.01.15 |
python3(파이썬) 유저를 위한 javascript ES6(자바스크립트) 기본 문법 (1) | 2023.01.02 |