[python] 추상 팩토리 디자인 패턴
개요
추상 팩토리 디자인 패턴은 객체 생성에 관련된 문제를 해결하기 위한 소프트웨어 디자인 패턴 중 하나입니다. 이 패턴은 관련된 객체들을 생성하는 인터페이스를 제공하여 객체들 간의 상호 작용과 결합도를 낮추는데 도움을 줍니다. 추상 팩토리는 하나 이상의 추상 메서드를 포함하는 인터페이스로 구성되며, 구체적인 팩토리는 이 추상 메서드를 구현하여 실제 객체를 생성합니다.
사용 예시
다음은 추상 팩토리 디자인 패턴을 사용하여 GUI 요소를 생성하는 예시 코드입니다.
from abc import ABC, abstractmethod
# 추상 팩토리 인터페이스
class GUIFactory(ABC):
@abstractmethod
def create_button(self):
pass
@abstractmethod
def create_checkbox(self):
pass
# 구체적인 팩토리 클래스
class WinFactory(GUIFactory):
def create_button(self):
return WinButton()
def create_checkbox(self):
return WinCheckbox()
class OSXFactory(GUIFactory):
def create_button(self):
return OSXButton()
def create_checkbox(self):
return OSXCheckbox()
# 추상 제품 클래스
class Button(ABC):
@abstractmethod
def render(self):
pass
class Checkbox(ABC):
@abstractmethod
def render(self):
pass
# 구체적인 제품 클래스
class WinButton(Button):
def render(self):
print("Render a Windows button")
class WinCheckbox(Checkbox):
def render(self):
print("Render a Windows checkbox")
class OSXButton(Button):
def render(self):
print("Render an OSX button")
class OSXCheckbox(Checkbox):
def render(self):
print("Render an OSX checkbox")
# 클라이언트 코드
def create_gui(factory):
button = factory.create_button()
checkbox = factory.create_checkbox()
button.render()
checkbox.render()
# 클라이언트 코드에서 추상 팩토리를 이용하여 GUI 생성
win_factory = WinFactory()
create_gui(win_factory)
osx_factory = OSXFactory()
create_gui(osx_factory)
결론
추상 팩토리 디자인 패턴은 객체 생성에 대한 추상화를 제공하여 유연한 코드 작성을 가능하게 합니다. 이를 통해 코드의 확장성과 재사용성을 높이며, 객체 간의 결합도를 낮출 수 있습니다. 추상 팩토리 디자인 패턴은 복잡한 소프트웨어 시스템에서 유용하게 사용될 수 있으며, 많은 프로그래밍 언어에서 지원하고 있습니다.
참조: Design Patterns - Abstract Factory