본문 바로가기
javascript pure/javascript 코어 개념

19. 디자인 패턴(Design Patterns) - 1

by leo2114 2024. 2. 16.
반응형

싱글톤(Singleton) 패턴과 팩토리(Factory) 패턴

싱글톤 패턴과 팩토리 패턴은 소프트웨어 디자인 패턴 중에서 자주 사용되는 패턴입니다. 이번 챕터에서는 두 패턴의 개념과 각각의 활용 방법에 대해 알아보겠습니다.

1. 싱글톤(Singleton) 패턴

싱글톤 패턴은 애플리케이션 전체에서 단 하나의 인스턴스를 생성하고 이를 공유하여 사용하는 디자인 패턴입니다. 주로 공유된 자원이나 설정, 로깅 등의 용도로 사용됩니다.

핵심 내용:

  • 인스턴스 생성을 단 한 번만 수행하고 그 이후에는 기존 인스턴스를 반환하는 방식으로 구현됩니다.
  • 전역 변수를 사용하거나 정적 메소드를 통해 인스턴스에 접근할 수 있습니다.

예시:

class Singleton {
    constructor() {
        if (!Singleton.instance) {
            Singleton.instance = this;
        }

        return Singleton.instance;
    }
}

const instance1 = new Singleton();
const instance2 = new Singleton();

console.log(instance1 === instance2); // true

2. 팩토리(Factory) 패턴

팩토리 패턴은 객체 생성을 캡슐화하여 클라이언트가 직접 객체를 생성하는 것을 방지하고 객체를 생성하는 인터페이스를 제공하는 디자인 패턴입니다. 다양한 객체를 생성하고 이를 통일된 방식으로 제어할 때 유용합니다.

핵심 내용:

  • 클라이언트는 팩토리에게 객체 생성을 요청하고 팩토리는 요청에 맞는 객체를 생성하여 반환합니다.
  • 팩토리는 객체 생성 로직을 캡슐화하여 유연성과 확장성을 제공합니다.

예시:

class ProductFactory {
    createProduct(type) {
        switch (type) {
            case 'A':
                return new ProductA();
            case 'B':
                return new ProductB();
            default:
                throw new Error('Invalid product type.');
        }
    }
}

class ProductA {
    // ProductA 클래스 구현
}

class ProductB {
    // ProductB 클래스 구현
}

const factory = new ProductFactory();
const productA = factory.createProduct('A');
const productB = factory.createProduct('B');

 

싱글톤 패턴과 팩토리 패턴은 각각 인스턴스 생성과 객체 생성을 다루는데 유용한 디자인 패턴입니다. 적절한 상황에서 사용하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

반응형