Factory Pattern

Ahyeon, Jung·2024년 2월 6일
0
post-custom-banner

Factory Pattern

객체 생성을 캡슐화하고, 생성되는 구체적인 객체의 유형을 클라이언트 코드로부터 분리하는 데 사용됨

객체 생성을 담당하는 팩토리 클래스를 도입. 클라이언트 코드는 팩토리 클래스를 통해 객체를 생성하며, 이를 통해 클라이언트 코드는 구체적인 객체의 클래스에 대한 지식 없이도 해당 객체를 얻을 수 있음

Product Interface

생성될 객체에 대한 인터페이스를 정의

Concrete Product Classes

제품 인터페이스를 구현한 실제 객체들

Factory Interface

객체를 생성하는 메서드를 선언한 인터페이스

Concrete Product Classes

팩토리 인터페이스를 구현하여 객체를 생성하는 구체적인 클래스들

Client

팩토리 클래스를 통해 객체를 생성하는 주체로, 구체적인 객체의 클래스에 대한 지식 없이도 객체를 생성 가능자

자바스크립트 코드로 알아보기

// 제품 인터페이스
class Product {
  display() {
    throw new Error("Method 'display' must be implemented");
  }
}

// 구체적인 제품 클래스
class ConcreteProductA extends Product {
  display() {
    console.log("Product A");
  }
}

class ConcreteProductB extends Product {
  display() {
    console.log("Product B");
  }
}

// 팩토리 인터페이스
class Factory {
  createProduct() {
    throw new Error("Method 'createProduct' must be implemented");
  }
}

// 구체적인 팩토리 클래스
class ConcreteFactoryA extends Factory {
  createProduct() {
    return new ConcreteProductA();
  }
}

class ConcreteFactoryB extends Factory {
  createProduct() {
    return new ConcreteProductB();
  }
}

// 클라이언트
const factoryA = new ConcreteFactoryA();
const productA = factoryA.createProduct();
productA.display(); // 출력: Product A

const factoryB = new ConcreteFactoryB();
const productB = factoryB.createProduct();
productB.display(); // 출력: Product B
profile
https://a-honey.tistory.com/
post-custom-banner

0개의 댓글