반응형
팩토리 패턴 개념
팩토리 패턴(Factory Pattern)은 객체의 생성 과정을 추상화하고 캡슐화하여, 클라이언트가 구체적인 클래스의 구현을 알지 못해도 객체를 생성할 수 있도록 지원하는 생성 디자인 패턴입니다. 즉, 실제 객체를 생성하는 방법을 숨기고, 객체 생성 요청을 받은 팩토리 클래스가 적절한 객체를 만들어 반환하는 방식입니다.
팩토리 패턴 특징 및 동작 원리
- 객체 생성과 관련된 로직을 별도의 팩토리 클래스에서 처리하여, 클라이언트는 객체 생성 방법을 몰라도 됩니다.
- 팩토리는 인터페이스를 반환하고, 클라이언트는 실제 구현 클래스를 직접 알지 않고 인터페이스만을 다룹니다.
- 객체 생성 과정을 캡슐화하기 때문에 객체 생성과 사용을 분리해 시스템의 유연성과 확장성을 크게 높입니다.
팩토리 패턴 장점
- 새로운 객체 타입을 추가할 때 팩토리 클래스만 수정하면 되므로 확장성이 뛰어납니다.
- 객체 간 결합도가 낮아져 유지보수가 용이해집니다.
- 객체 생성 로직을 한 곳에서 관리하여 코드 중복을 방지할 수 있습니다.
- 클래스 간의 의존성을 줄여 유연한 코드 설계가 가능합니다.
팩토리 패턴 단점
- 팩토리 클래스와 인터페이스를 추가로 만들어야 하므로 클래스 수가 많아져 복잡해질 수 있습니다.
- 작은 프로젝트에 적용하면 오히려 구조가 복잡해질 수 있습니다.
팩토리 패턴 사용 예시
- 다양한 결제 수단(카드, 현금, 모바일 등)을 지원하는 결제 시스템
- 데이터베이스 연결 객체를 생성하는 DB Connection Pool 관리
팩토리 패턴 (Factory Pattern)
[클라이언트(Client)]
│
▼
[팩토리(Factory)]
│
├───────────────┐
▼ ▼ ▼
[제품 A 생성] [제품 B 생성] [제품 C 생성]
│ │ │
▼ ▼ ▼
[구체적인 제품 A] [구체적인 제품 B] [구체적인 제품 C]
팩토리 패턴의 흐름
- 클라이언트(Client) 는 제품을 생성하는 책임을 팩토리(Factory) 에게 위임합니다.
- 팩토리(Factory) 는 클라이언트의 요청에 따라 특정 조건을 판단해 어떤 제품을 생성할지 결정합니다.
- 팩토리 가 제품을 생성하여 클라이언트에게 제공합니다. 클라이언트는 제품의 구체적인 생성 방식에 대해 알 필요가 없습니다.
public interface Product {
void use();
}
public class ConcreteProductA implements Product {
public void use() {
System.out.println("제품 A 사용");
}
}
public class ConcreteProductB implements Product {
public void use() {
System.out.println("제품 B 사용");
}
}
public class ProductFactory {
public static Product createProduct(String type) {
switch (type) {
case "A":
return new ConcreteProductA();
case "B":
return new ConcreteProductB();
default:
throw new IllegalArgumentException("알 수 없는 제품 타입");
}
}
}
// 사용 예시
public class Client {
public static void main(String[] args) {
Product product = ProductFactory.createProduct("A");
product.use(); // 출력: 제품 A 사용
}
}
추상 팩토리(Abstract Factory) 패턴
추상 팩토리 패턴은 구체적인 클래스에 의존하지 않고 관련된 객체들의 집합(제품군)을 생성하는 인터페이스를 제공합니다. 즉, 관련된 객체의 생성을 추상화하여, 클라이언트가 제품군의 구성과 구현 세부 사항을 알지 못해도 객체를 생성할 수 있도록 합니다.
사용 예시
- 서로 다른 GUI 구성 요소(버튼, 체크박스 등)를 플랫폼에 따라 생성하는 경우
면접 대비 질문 및 답변
- 팩토리 패턴이란 무엇이며, 어떤 상황에서 사용하는 것이 적합한가?
팩토리 패턴은 객체의 생성 로직을 별도의 팩토리 클래스가 담당하도록 하는 패턴입니다. 객체 생성이 복잡하거나 여러 객체 중에서 상황에 따라 다르게 생성해야 할 경우 사용하기 적합합니다. - 팩토리 패턴을 사용하면 얻을 수 있는 장점과 발생할 수 있는 문제점은 무엇인가?
장점은 객체 생성의 유연성 및 유지보수성 증가이며, 문제점은 클래스 수가 늘어나 코드 복잡성이 증가할 가능성입니다. - 팩토리 메서드와 추상 팩토리 패턴의 차이는 무엇인가?
팩토리 메서드는 객체 생성 시 특정 객체의 생성을 서브클래스에게 위임하여 하나의 객체 생성 로직을 관리합니다. 반면 추상 팩토리는 관련 있는 여러 객체군의 생성을 추상화한 인터페이스를 제공하여 전체 객체군의 생성을 관리합니다.
반응형
'CS 공부일지 > 디자인패턴 공부일지' 카테고리의 다른 글
옵저버 패턴(Observer Pattern)의 개념과 특징 (0) | 2025.03.31 |
---|---|
전략 패턴 (Strategy Pattern)의 개념과 특징 (0) | 2025.03.31 |
이터레이터 패턴(Iterator Pattern)의 개념과 특징 (0) | 2025.03.31 |
싱글톤 패턴(Singleton Pattern)의 정의와 구현 방법 (0) | 2025.03.31 |
디자인패턴의 정의와 예시 (0) | 2025.03.30 |