[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