JS의 싱글톤과 사용 방법
오늘은 싱글톤과 우리가 일상적으로 어떻게 사용하고 있는지에 대해 말씀드리고자 합니다.
따라서 싱글톤 패턴을 사용하면 특정 클래스의 단일 인스턴스를 만들 수 있습니다. 어떤 목적으로 도움이 될 수 있습니까? 우리는 그것들을 다음 용도로 사용하고 있습니다:
예를 들어 이전에 설명한 캐시 서비스( )를 계속 사용하기로 결정했습니다.
우리 앱의 캐시 서비스는 어떻게 싱글톤을 만들까요?
싱글톤을 생성하는 매우 기본적인 코드부터 시작하겠습니다.
class SingletoneService {
static instance;
getInstance(args) {
if (!SingletoneService.instance) {
SingletoneService.instance = new SingletoneService(...args);
}
return SingletoneService.instance;
}
constructor(args) {
// do something with args
}
doSomething() {
// do something
}
}
어떻게 작동합니까? 메인 프로그램에서 인수(필요한 경우)와 함께 이 getInstance 메소드를 호출하여 싱글톤 인스턴스를 생성할 수 있습니다.
function main() {
const instance = SingletoneService.getInstance();
instance.doSomething();
}
main();
getInstance 메서드를 호출하여 SingletoneService 클래스의 정적 인스턴스 필드 값을 확인한 다음 new 키워드를 사용하여 해당 클래스를 기반으로 새 개체를 인스턴스화합니다. 존재하는 경우 단순히 기존 인스턴스를 반환합니다.
이제 초안 구현이 완료되면 이 기능을 CacheService로 이동해 보십시오.
class SomeServiceWithDataCache {
static instance;
getInstance(args) {
if (!SomeServiceWithDataCache.instance) {
SomeServiceWithDataCache.instance = new SomeServiceWithDataCache(...args);
}
return SomeServiceWithDataCache.instance;
}
constructor() {
this.cache = {
isLoading: false,
expire: 0,
data: null
};
this.cacheSubscriptions = [];
}
...
}
또한 싱글톤을 사용하여 클래스에 종속성을 주입할 수 있습니다.
class DataProcessingService {
// use existing DataCacheService instance by default
constructor(cacheService = DataCacheService.getInstance()) {
// do something in constructor)
}
...
}
코드 격리 및 개방형 폐쇄 원칙을 구현할 수 있습니다.
Reference
이 문제에 관하여(JS의 싱글톤과 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/frozer/singletons-in-js-and-how-to-use-them-2abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)