[파이썬] 팩토리 패턴과 객체 생성

파이썬은 객체 지향 프로그래밍 언어로서 객체를 생성하고 사용하는 것이 핵심입니다. 객체를 생성하기 위해서는 해당 클래스의 인스턴스를 만들어야 합니다. 이때, 팩토리 패턴을 사용하면 객체 생성에 관련된 코드를 캡슐화하고, 유연하고 확장 가능한 구조를 만들 수 있습니다.

팩토리 패턴(Factory Pattern)

팩토리 패턴은 객체 생성을 위한 디자인 패턴으로, 객체 생성을 처리하는 코드를 캡슐화하여 클라이언트로부터 숨기고, 객체를 생성하는 과정을 유연하게 변경할 수 있습니다. 이를 통해 코드의 수정이나 확장이 필요한 경우, 해당 팩토리 클래스만 수정하면 되므로 전체 코드를 수정할 필요가 없습니다.

파이썬에서 팩토리 패턴을 효과적으로 구현하기 위해서는 다음과 같은 요소들이 필요합니다.

  1. 추상 팩토리(Abstract Factory): 객체 생성을 위한 추상 인터페이스로, 팩토리 클래스가 구현해야 하는 메소드들을 정의합니다.
  2. 팩토리 클래스(Factory Class): 추상 팩토리를 구체화한 클래스로, 실제로 객체를 생성하는 역할을 합니다.
  3. 클라이언트(Client): 팩토리 클래스를 사용하여 객체를 생성하는 역할을 합니다.

예제: 도형 객체 생성하기

이제 실제 예제를 통해 팩토리 패턴을 사용한 객체 생성을 알아보겠습니다. 도형 객체를 생성하는 예제를 통해 구현 방법을 소개하겠습니다.

class Shape:
    def draw(self):
        pass

class Circle(Shape):
    def draw(self):
        print("Circle")

class Square(Shape):
    def draw(self):
        print("Square")

class Triangle(Shape):
    def draw(self):
        print("Triangle")

class ShapeFactory:
    def createShape(self, shape_type):
        if shape_type == "circle":
            return Circle()
        elif shape_type == "square":
            return Square()
        elif shape_type == "triangle":
            return Triangle()

# 클라이언트 코드
factory = ShapeFactory()
circle = factory.createShape("circle")
circle.draw()  # "Circle" 출력

위의 코드는 도형 객체를 생성하기 위한 팩토리 패턴의 예제입니다. Shape 추상 클래스를 정의하고, 이를 상속받은 Circle, Square, Triangle 클래스를 구현합니다. 그리고 ShapeFactory 클래스를 정의하여 도형 객체를 생성합니다.

클라이언트 코드에서는 ShapeFactory를 사용하여 원하는 도형 객체를 생성하고, 해당 객체의 draw 메소드를 호출합니다.

팩토리 패턴의 장점

  1. 객체 생성에 대한 코드를 캡슐화하여 유지보수와 코드 가독성을 향상시킵니다.
  2. 객체 생성 방식을 추상화하여 코드의 확장성과 유연성을 높입니다.
  3. 클라이언트 코드에서는 실제 객체 생성과정을 알 필요 없이 객체 사용에 집중할 수 있습니다.

마치며

파이썬에서 팩토리 패턴을 사용하여 객체를 생성하는 방법을 알아보았습니다. 팩토리 패턴은 객체 생성과 관련된 코드의 변화에 대비하기 위해 사용할 수 있는 유용한 디자인 패턴입니다. 다양한 상황에서 팩토리 패턴을 적용하여 코드의 유연성과 확장성을 높여보세요.