node.js 프로그래밍에서 class의 instance는 최초 선언 및 초기화할 때
단 한번만 선언되는 구조를 말한다.
node.js를 뿐만 아니라 javascript 환경에서 class를 사용할 때 유의해야할 점이 두가지가 있다.
쉽게 말하면 Singleton Pattern은 다음의 조건을 만족하는 프로그래밍 방법론이다.
- 한 class(객체)에서 하나의 instance만 존재해야 한다.
- 한 class(객체)에서 instance는 반드시 존재해야 한다.
한 class에서 instance가 없는 경우(생성자를 통해 instance 생성이 되지 않은 경우),
다른 class의 instance를 통해 참조하기
SingletonPattern의 기초를 알 수 있는 구문이다.
Singleton class에서 생성자가 선언이 안되어 instance가 존재하지 않을때, PrivateSingleton class의 생성자를 참조할 수 있는 경우이다.
class PrivateSingleton {
constructor() {
this.message = "I am an instance";
}
}
class Singleton {
constructor() {
throw new Error("Use Singleton.getInstance()");
}
static getInstance() {
if (!Singleton.instance) {
Singleton.instance = new PrivateSingleton();
}
return Singleton.instance;
}
}
const object = Singleton.getInstance();
console.log(object.message); // Prints out: 'I am an instance'
object.message = "Foo Bar"; // Overwrite message property
const instance = Singleton.getInstance();
console.log(instance.message); // Prints out: 'Foo Bar'
위 코드를 통해 SingleTon pattern을 구현하기 위해 유의해야할 점을 알 수 있다.
우리가 무심코 사용하는 javscript의 class 선언방법이 singleton pattern이다.
class를 선언하면서 constructor에 this를 통해 instance를 binding 해주는, 우리가 무심코 코딩하던 방법들이 singleton pattern이다.
singleton pattern은 생각보다 어렵지 않은 개념이지만, 개념을 확실히 알아두어야 프로그래밍을 구현하는데 수월해진다.
class Singleton {
constructor() {
this.message = "I am an instance";
}
}
//OK
obj = new Singleton();
console.log(obj.message);
//No
//console.log(Singleton.message);
class와 constructor의 생성 및 해당 객체를 사용할 때, new 를 통해 인스턴스를 참조(접근)할 객체변수를 만들어야 한다는 점을 기억하자.
node.js
https://morioh.com/p/594a4acabb5c
singleton pattern
https://medium.com/swlh/node-js-and-singleton-pattern-7b08d11c726a