개발
[ 디자인 패턴 ] 1.3 팩토리메서드(FactoryMethod)
Crmal
2023. 9. 11. 15: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"
- 인터페이스 또는 추상 클래스 정의: 먼저, 생성될 객체의 공통된 특징을 정의하기 위해 인터페이스나 추상 클래스를 만듭니다.
- 팩토리 메서드 정의: 이 메서드는 객체를 생성하는 역할을 합니다. 이 메서드는 일반적으로 추상 메서드로 선언되어 있습니다.
- 서브 클래스에서 메서드 구현: 실제로 객체를 생성하는 코드는 서브 클래스에서 구현됩니다. 각 서브 클래스에서는 자신에게 필요한 구체적인 객체를 생성하는 방법을 구현합니다.
- 클라이언트에서 팩토리 호출: 클라이언트는 팩토리 메서드를 호출하여 필요한 객체를 생성합니다. 클라이언트는 어떤 구체적인 클래스의 인스턴스를 생성할지 명시적으로 지정하지 않아도 됩니다.