공장 방법 패턴
개요
- 개체를 만들기위한 인터페이스를 정의하고 하위 클래스가 인스턴스화 할 제품 클래스를 결정하도록합니다.
캐릭터
- 추상 공장 역할 (크리에이터)
- 콘크리트 공장 역할 (콘크리트 생성자)
- 추상 제품 역할 (제품)
- 구체적인 제품 역할
예
from abc import ABCMeta,abstractmethod
class Animal(metaclass=ABCMeta):
@abstractmethod
def walk(self):
pass
class Rabbit(Animal):
def walk(self):
print("兔子行走")
class Duck(Animal):
def walk(self):
print("鸭子行走")
class AnimalFactory(metaclass=ABCMeta):
@abstractmethod
def create_animal(self):
pass
class RabbitFactory(AnimalFactory):
def create_animal(self):
return Rabbit()
class DuckFactory(AnimalFactory):
def create_animal(self):
return Duck()
이점
- 각 특정 제품은 특정 팩토리 클래스에 해당하므로 팩토리 클래스 코드를 수정할 필요가 없습니다.
- 숨겨진 개체 생성 구현 세부 정보
불리
- 특정 제품 카테고리가 추가 될 때마다 해당하는 특정 공장 카테고리를 추가해야합니다.