팩토리: 공장. 뭔가를 생성한다는 건데.
다른 클래스의 객체를 생성해서 반환하는 클래스를 말한다.
팩토리 패턴에 대해 찾아보는데 팩토리 패턴에 대해 설명하는 글마다 내용이 조금씩 달라서 무척 헷갈렸다. 알고보니 각자 팩토리 패턴 종류가 달라서였다.
객체 생성 로직을 숨기며 객체를 생성
심플 팩토리패턴은 패턴으로 인정하지 않기도 해서 나머지 두개의 패턴을 이해하기 위한 기본 개념 정도로 생각하면 된다고 한다.
from abc import ABC, abstractmethod
class Media(ABC):
@abstractmethod
def play_something(self):
pass
class Video(Media):
def play_something(self):
return 'you can see'
class Audio(Media):
def play_something(self):
return 'you can hear'
class SimpleFactory:
def play_it(self, object_type):
return object_type().play_something()
factory = SimpleFactory()
print(factory.play_it(Video))
print(factory.play_it(Audio))
you can see you can hear
이런식으로 클래스를 직접 호출하지 않고 객체를 생성할 수 있다.
객체 생성에 필요한 클래스를 노출하지 않고 클래스를 생성하는 인터페이스
내부적으로 다른 팩토리 객체를 생성
인터페이스를 통해 객체를 생성하지만 서브 클래스가 객체 생성에 필요한 클래스를 선택한다.