본문 바로가기
개발

[ 디자인 패턴 ] 1.3 팩토리메서드(FactoryMethod)

by Crmal 2023. 9. 11.

팩토리메서드란

Factory Pattern은 비슷한 객체를 반복적으로 생성해야 할 경우 사용하는 패턴입니다.

// Step 1: 인터페이스 (또는 추상 클래스) 정의
class Animal {
  makeSound() {
    throw new Error('This method should be overridden');
  }
}

// Step 2: 팩토리 메서드 정의
class AnimalFactory {
  createAnimal() {
    throw new Error('This method should be overridden');
  }
}

// Step 3: 서브 클래스에서 메서드 구현
class Dog extends Animal {
  makeSound() {
    return 'Bark';
  }
}

class DogFactory extends AnimalFactory {
  createAnimal() {
    return new Dog();
  }
}

// Step 4: 클라이언트에서 팩토리 호출
const dogFactory = new DogFactory();

const dog = dogFactory.createAnimal();

console.log(dog.makeSound()); // 출력: "Bark"
  1. 인터페이스 또는 추상 클래스 정의: 먼저, 생성될 객체의 공통된 특징을 정의하기 위해 인터페이스나 추상 클래스를 만듭니다.
  2. 팩토리 메서드 정의: 이 메서드는 객체를 생성하는 역할을 합니다. 이 메서드는 일반적으로 추상 메서드로 선언되어 있습니다.
  3. 서브 클래스에서 메서드 구현: 실제로 객체를 생성하는 코드는 서브 클래스에서 구현됩니다. 각 서브 클래스에서는 자신에게 필요한 구체적인 객체를 생성하는 방법을 구현합니다.
  4. 클라이언트에서 팩토리 호출: 클라이언트는 팩토리 메서드를 호출하여 필요한 객체를 생성합니다. 클라이언트는 어떤 구체적인 클래스의 인스턴스를 생성할지 명시적으로 지정하지 않아도 됩니다.

댓글