지금을 사는 사람

팩토리 패턴 (Factory Pattern) 본문

CS/디자인패턴

팩토리 패턴 (Factory Pattern)

지금회 2023. 12. 20. 14:11
728x90

 

소개:

소프트웨어 디자인에서 객체 생성 부분을 캡슐화하고, 클라이언트 코드로부터 객체의 생성을 분리해내는 Factory Pattern은 유연하고 확장 가능한 코드를 작성하는 데 기여합니다. 이 블로그에서는 Factory Pattern에 대해 자세히 알아보겠습니다.


1. Factory Pattern이란?

  • 개념:
    • Factory Pattern은 객체 생성을 처리하는 인터페이스를 정의하고, 객체의 생성을 서브 클래스에 위임하여 객체 생성을 캡슐화하는 디자인 패턴입니다.
  • 목적:
    • 객체 생성 코드를 클라이언트 코드로부터 분리하여 코드 유지보수성을 향상시키고, 객체 생성 로직의 확장을 용이하게 합니다.

2. Factory Pattern의 구성 요소

  • Product(제품):
    • 생성될 객체의 인터페이스를 정의합니다.
  • ConcreteProduct(구체적인 제품):
    • Product 인터페이스를 구현하는 클래스로, 실제로 생성되는 객체를 나타냅니다.
  • Creator(창조자):
    • 제품을 생성하는 메서드를 선언하는 인터페이스 또는 추상 클래스입니다.
  • ConcreteCreator(구체적인 창조자):
    • 제품을 생성하는 구체적인 팩토리 클래스로, 실제로 객체를 생성합니다.

3. Factory Pattern의 구현 예시

// Product 인터페이스
interface Product {
    void operation();
}

// ConcreteProduct 구현
class ConcreteProductA implements Product {
    @Override
    public void operation() {
        System.out.println("Operation in Product A");
    }
}

// ConcreteProduct 구현
class ConcreteProductB implements Product {
    @Override
    public void operation() {
        System.out.println("Operation in Product B");
    }
}

// Creator 인터페이스
interface Creator {
    Product createProduct();
}

// ConcreteCreator 구현
class ConcreteCreatorA implements Creator {
    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

// ConcreteCreator 구현
class ConcreteCreatorB implements Creator {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

4. Factory Pattern의 이점

  • 유연성과 확장성:
    • 클라이언트 코드는 구체적인 클래스를 알 필요 없이 인터페이스를 통해 객체를 생성할 수 있습니다. 새로운 제품이 추가되어도 클라이언트 코드 수정이 필요하지 않습니다.
  • 코드 분리:
    • 객체 생성 코드가 클라이언트 코드로부터 분리되므로, 코드 유지보수성이 향상되고 객체 생성 부분이 중앙집중화되어 변경이 용이해집니다.

5. Factory Method vs Abstract Factory

  • Factory Method:
    • 단일 메서드를 통해 하나의 제품을 생성합니다.
  • Abstract Factory:
    • 여러 제품이 함께 생성되는 패턴으로, 제품군을 생성하는 인터페이스를 제공합니다.

6. 사용 예시:

  • 자바에서의 사용:
    • JDBC에서의 Connection 객체 생성, GUI 라이브러리에서의 윈도우 생성 등 많은 자바 라이브러리에서 Factory Pattern이 활용됩니다.

7. 결론

Factory Pattern은 객체 생성을 캡슐화하여 코드 유연성과 확장성을 높이는 데 기여합니다. 코드의 수정이나 새로운 객체의 추가가 일어날 때, 해당 변경이 최소화되고 클라이언트 코드는 변경에 영향을 받지 않도록 하는 등의 장점을 제공합니다. 이는 객체지향 소프트웨어 디자인의 핵심 원칙 중 하나인 "개방/폐쇄 원칙"을 지키는 데 기여합니다.

 

728x90

'CS > 디자인패턴' 카테고리의 다른 글

빌더 패턴 (Builder Pattern)  (0) 2023.12.15