싱글톤 패턴
객체지향 프로그래밍에서 사용되는 디자인 패턴 중 하나. 한 클래스로 하나의 인스턴스만 생성하는 패턴이다. 하나의 객체만을 위한 클래스를 작성할 때 사용한다.
TS 구현 방법
1. constructor를 private으로 만들어 인스턴스를 직접 생성하지 못하도록 한다. 이제 내부 변수인 인스턴스는 클래스 내에서만 접근할 수 있게 된다.
2. 정적 메서드인 getInstance로 클래스의 인스턴스가 존재하는지 확인하고, 없다면 새로운 인스턴스를 반환하도록 한다.
예시 코드
아래 코드에서는 MyRoom이라는 클래스에 싱글톤 패턴을 적용하여 하나의 방(인스턴스)만 생성할 수 있도록 하였다.
초기 룸넘버는 123으로 고정하고, room1을 생성한다. 세터로 룸넘버를 333으로 변경한 후 room2를 생성하여 room1과 비교해본다. 콘솔 로그 결과로 두 변수의 룸넘버가 333으로 확인된다.
이로써 MyClass 클래스로는 하나의 인스턴스만 생성할 수 있다는 것을 확인할 수 있다.
class MyRoom {
private static instance: MyRoom;
private constructor(private roomNumber: number) {}
static getInstance() {
if (!MyRoom.instance) {
this.instance = new MyRoom(123); // static 메서드 내부에서만 private 생성자에 접근 가능
}
return this.instance;
}
get privateRoomNumber() {
return this.roomNumber;
}
set privateRoomNumber(numNumber: number) {
this.roomNumber = numNumber;
}
}
const room1 = MyRoom.getInstance(); // 방 생성, 룸넘버 123
room1.privateRoomNumber = 333;
const room2 = MyRoom.getInstance(); // 위와 동일한 인스턴스 반환
console.log(room1, room2);
/*
MyRoom: {
"roomNumber": 333
}, MyRoom: {
"roomNumber": 333
}
*/
'STORAGE > JavaScript|TypeScript' 카테고리의 다른 글
dragAndDrop API (0) | 2024.04.02 |
---|---|
this의 동적 바인딩👆 (0) | 2024.03.31 |
동적으로 css 변수 만들기 (0) | 2023.09.25 |
댓글