한번에 두가지 문제를 해결 -> 단일 책임 원칙 위반에 유의
최근에는 둘중 하나의 문제만 해결하는 경우도 싱글턴이라 부르기도 함
class Singleton {
// getter만을 통해 접근가능한 인스턴스를 생성해 캐시 역할로 사용
private static instance: Singleton;
// 전역 변수 값을 저장하지만 수정은 불가능하게 생성자를 private로 사용
private constructor() { }
// 이제 static 생성 메서드를 통해 받아낸 값은 항상 동일하면서 수정이 불가능하게 됨
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
public someBusinessLogic() {
// ...
}
}
function clientCode() {
const s1 = Singleton.getInstance();
const s2 = Singleton.getInstance();
//Singleton works, both variables contain the same instance.
if (s1 === s2) {
console.log('Singleton works, both variables contain the same instance.');
} else {
console.log('Singleton failed, variables contain different instances.');
}
}
clientCode();