팩토리 패턴(Factory Pattern)
팩토리 패턴은 객체 지향 프로그래밍에서 가장 많이 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성 로직을 클라이언트 코드와 분리하여 객체 생성의 유연성과 재사용성을 높이는 데 중점을 둡니다.
팩토리 패턴의 종류
1. 심플 팩토리(Simple Factory)
- 가장 기본적인 형태로, 단일 팩토리 클래스가 모든 객체 생성을 담당합니다.
- 팩토리 클래스는 매개변수에 따라 다른 유형의 객체를 반환합니다.
- 엄밀히 말하면 디자인 패턴이라기보다는 프로그래밍 관행에 가깝습니다.
2. 팩토리 메소드(Factory Method)
- 객체 생성을 서브클래스에 위임하는 방식입니다.
- 추상 클래스나 인터페이스에서 객체 생성을 위한 메소드를 정의하고, 구체적인 구현은 서브클래스에서 담당합니다.
- 새로운 제품을 추가할 때 기존 코드를 수정하지 않고 확장할 수 있습니다.
3. 추상 팩토리(Abstract Factory)
- 관련된 객체들의 집합을 생성하기 위한 인터페이스를 제공합니다.
- 여러 관련 객체군을 함께 사용해야 할 때 유용합니다.
- 여러 팩토리 메소드를 포함하는 상위 수준의 팩토리입니다.
팩토리 패턴의 장점
- 결합도 감소: 객체 생성 코드와 사용 코드를 분리함으로써 시스템의 결합도를 낮춥니다.
- 유지보수성 향상: 객체 생성 로직이 한 곳에 집중되어 있어 유지보수가 용이합니다.
- 코드 재사용: 동일한 팩토리를 여러 곳에서 사용할 수 있습니다.
- 확장성: 새로운 객체 유형을 추가할 때 기존 코드를 수정하지 않고도 시스템을 확장할 수 있습니다.
- 캡슐화: 객체 생성 과정의 복잡성을 숨기고 클라이언트에게 간단한 인터페이스를 제공합니다.
팩토리 패턴의 단점
- 클래스 수 증가: 새로운 제품을 추가할 때마다 새로운 클래스가 필요할 수 있습니다.
- 복잡성: 단순한 경우에는 오히려 복잡성을 증가시킬 수 있습니다.
- 디버깅 난이도: 간접적인 객체 생성으로 인해 디버깅이 어려울 수 있습니다.
실제 사용 사례
- UI 컴포넌트 라이브러리에서 플랫폼별 컴포넌트 생성
- 데이터베이스 연결 관리자
- 다양한 형식의 문서 생성기
- 다양한 운영 체제에 맞는 UI 요소 생성
팩토리 패턴은 객체 생성의 유연성과 코드의 재사용성을 높이는 강력한 도구입니다. 특히 시스템이 확장될 가능성이 있거나 객체 생성 로직이 복잡한 경우에 매우 유용합니다.
'소프트웨어 공학 > 디자인 패턴' 카테고리의 다른 글
| 연관 기반 디자인 vs 소유 기반 디자인 (0) | 2025.06.02 |
|---|---|
| C#] 오브젝트 컨테이너에 대하여 (0) | 2025.04.29 |