"깊이"가 다른 게임개발자 허민영

유저에서 게임까지, 철학에서 코딩까지, 본질을 보는 게임개발

소프트웨어 공학/디자인 패턴

팩토리 패턴(Factory Pattern)

허민영 2025. 5. 8. 22:18

 

팩토리 패턴(Factory Pattern)

팩토리 패턴은 객체 지향 프로그래밍에서 가장 많이 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성 로직을 클라이언트 코드와 분리하여 객체 생성의 유연성과 재사용성을 높이는 데 중점을 둡니다.

팩토리 패턴의 종류

1. 심플 팩토리(Simple Factory)

  • 가장 기본적인 형태로, 단일 팩토리 클래스가 모든 객체 생성을 담당합니다.
  • 팩토리 클래스는 매개변수에 따라 다른 유형의 객체를 반환합니다.
  • 엄밀히 말하면 디자인 패턴이라기보다는 프로그래밍 관행에 가깝습니다.

2. 팩토리 메소드(Factory Method)

  • 객체 생성을 서브클래스에 위임하는 방식입니다.
  • 추상 클래스나 인터페이스에서 객체 생성을 위한 메소드를 정의하고, 구체적인 구현은 서브클래스에서 담당합니다.
  • 새로운 제품을 추가할 때 기존 코드를 수정하지 않고 확장할 수 있습니다.

3. 추상 팩토리(Abstract Factory)

  • 관련된 객체들의 집합을 생성하기 위한 인터페이스를 제공합니다.
  • 여러 관련 객체군을 함께 사용해야 할 때 유용합니다.
  • 여러 팩토리 메소드를 포함하는 상위 수준의 팩토리입니다.

팩토리 패턴의 장점

  1. 결합도 감소: 객체 생성 코드와 사용 코드를 분리함으로써 시스템의 결합도를 낮춥니다.
  2. 유지보수성 향상: 객체 생성 로직이 한 곳에 집중되어 있어 유지보수가 용이합니다.
  3. 코드 재사용: 동일한 팩토리를 여러 곳에서 사용할 수 있습니다.
  4. 확장성: 새로운 객체 유형을 추가할 때 기존 코드를 수정하지 않고도 시스템을 확장할 수 있습니다.
  5. 캡슐화: 객체 생성 과정의 복잡성을 숨기고 클라이언트에게 간단한 인터페이스를 제공합니다.

팩토리 패턴의 단점

  1. 클래스 수 증가: 새로운 제품을 추가할 때마다 새로운 클래스가 필요할 수 있습니다.
  2. 복잡성: 단순한 경우에는 오히려 복잡성을 증가시킬 수 있습니다.
  3. 디버깅 난이도: 간접적인 객체 생성으로 인해 디버깅이 어려울 수 있습니다.

실제 사용 사례

  • UI 컴포넌트 라이브러리에서 플랫폼별 컴포넌트 생성
  • 데이터베이스 연결 관리자
  • 다양한 형식의 문서 생성기
  • 다양한 운영 체제에 맞는 UI 요소 생성

팩토리 패턴은 객체 생성의 유연성과 코드의 재사용성을 높이는 강력한 도구입니다. 특히 시스템이 확장될 가능성이 있거나 객체 생성 로직이 복잡한 경우에 매우 유용합니다.