728x90
싱글톤 패턴 ( Singleton Pattern )
- 싱글톤 패턴이란, 인스턴스가 프로그램 내에서 오직 하나만 생성되는 것을 보장하고, 프로그램 어디에서든 이 인스턴스에 접근할 수 있도록 하는 패턴입니다.
- 즉, 인스턴스가 사용될 때 똑같은 인스턴스를 여러 개 만드는 것이 아니라, 기존에 생성했던 동일한 인스턴스를 사용하게끔 하는 것입니다.
- 전역 변수를 사용하지 않고 객체를 하나만 생성 하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
참고
생성(Creational) 패턴
객체 생성에 관련된 패턴
객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다.
ts 로 구현한 상태
class Singleton {
private static instance: Singleton;
private constructor() { }
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
public static someBusinessLogic(): Singleton {
//..
}
}
function clientCode() {
const s1 = Singleton.getInstance();
const s2 = Singleton.getInstance();
if (s1 == s2) {
console.log('Singleton works, both variables contain the same instance.');
} else {
console.log('Singleton failed, variables contain different instances.');
}
}
clientCode();
먼저 외부에서 객체를 생성할 수 없도록 생성자를 private으로 선언합니다.
즉, 객체 생성에 대한 관리를 내부적으로 하겠다는 의미이죠.
그러면 외부에서 SingleObj 객체를 생성할 수 없으므로, 미리 생성된 자신을 반환할 수 있도록 getInstance() 메서드를 정의합니다.
주의해야 할 것은 static으로 정의가 되었다는 점입니다.
생성자를 private으로 선언했기 때문에 객체를 생성할 수 없으므로, getInstacne() 메서드가 클래스에 정의되도록 static 제어자를 사용했습니다.
getInstance() 메서드를 호출했을 때,
- singleObj 변수에 객체가 할당되지 않으면( == null ) 새로운 객체를 생성하고,
- singleObj 변수에 객체가 이미 있으면 그것을 그대로 반환합니다.
'OOD > Creational Design Patterns(생성패턴)' 카테고리의 다른 글
Creational Pattern(생성 패턴) 개념 모음 (0) | 2021.11.23 |
---|---|
Abstract Factory Pattern(추상 팩토리 패턴) (0) | 2021.11.22 |
Builder Pattern(빌더 패턴) (0) | 2021.11.22 |
Factory Method patterns (0) | 2021.11.22 |