Notice
Recent Posts
Recent Comments
Link
나만의공간
🧱 추상 팩토리 패턴(Abstract Factory Pattern) – 제품군을 세트로 만들고 싶을 때! 본문
“TV는 삼성인데 냉장고는 LG라고요?”
제품을 세트로 깔끔하게 구성하고 싶을 때 사용하는 디자인 패턴이 있습니다. 바로 추상 팩토리 패턴입니다.
🧩 1. 추상 팩토리 패턴이란?
추상 팩토리 패턴은 관련된 객체들을 세트로 생성할 수 있게 해주는 디자인 패턴입니다.
즉, 여러 팩토리를 하나의 슈퍼 팩토리로 묶어, **제품군(product family)**을 일관성 있게 구성할 수 있게 합니다.
✅ 목적 요약
- TV와 냉장고처럼 관련된 객체를 묶음으로 생성
- 제품군이 다를 경우(삼성, LG 등) 각기 다른 객체 조합 제공
- 클라이언트는 어떤 구체 클래스를 사용하는지 모르도록 추상화
📌 2. 언제 사용하나요?
사용 상황설명
| 🧩 관련된 객체들을 세트로 생성 | TV–냉장고, 버튼–입력창 같은 UI 컴포넌트 등 |
| 🏗️ 브랜드, 환경, 플랫폼에 따라 객체 조합이 다를 때 | 삼성/LG, 다크모드/라이트모드 등 |
| 🎯 클라이언트가 어떤 클래스인지 알 필요 없도록 만들고 싶을 때 | 느슨한 결합(loose coupling) 지향 |
🎯 3. 예시 시나리오: 삼성 vs LG 전자제품
삼성과 LG에서 각각 TV와 냉장고를 만든다고 가정해보겠습니다.
요구사항: 같은 브랜드 제품끼리 세트로 생성하고 싶습니다.
🔧 4. 실무형 예제 코드
📁 1) 공통 인터페이스: TV, Refrigerator
public interface TV {
void turnOn();
}
public interface Refrigerator {
void cool();
}
📁 2) 삼성 제품군
public class SamsungTV implements TV {
public void turnOn() {
System.out.println("Samsung TV 켜짐");
}
}
public class SamsungRefrigerator implements Refrigerator {
public void cool() {
System.out.println("Samsung 냉장고 냉각 시작");
}
}
📁 3) LG 제품군
public class LgTV implements TV {
public void turnOn() {
System.out.println("LG TV 전원 ON");
}
}
public class LgRefrigerator implements Refrigerator {
public void cool() {
System.out.println("LG 냉장고 냉장 시작");
}
}
📁 4) 추상 팩토리 인터페이스
public interface ElectronicsFactory {
TV createTV();
Refrigerator createRefrigerator();
}
📁 5) 구체 팩토리: 삼성 & LG
public class SamsungFactory implements ElectronicsFactory {
public TV createTV() {
return new SamsungTV();
}
public Refrigerator createRefrigerator() {
return new SamsungRefrigerator();
}
}
public class LgFactory implements ElectronicsFactory {
public TV createTV() {
return new LgTV();
}
public Refrigerator createRefrigerator() {
return new LgRefrigerator();
}
}
📁 6) 클라이언트 코드
public class ElectronicsStore {
public static void main(String[] args) {
// 브랜드에 따라 공장을 선택
ElectronicsFactory factory = new SamsungFactory(); // 또는 new LgFactory()
TV tv = factory.createTV();
Refrigerator fridge = factory.createRefrigerator();
tv.turnOn();
fridge.cool();
}
}
✅ 실행 결과
Samsung TV 켜짐
Samsung 냉장고 냉각 시작
🧠 팩토리 패턴과의 차이점은?
구분팩토리 패턴추상 팩토리 패턴
| 목적 | 단일 객체 생성 | 관련된 객체군 생성 |
| 구조 | 하나의 팩토리 클래스 | 여러 팩토리를 추상화한 슈퍼 팩토리 |
| 예시 | 배송 타입별 객체 | TV + 냉장고 같은 세트 구성 |
💼 실무 활용 팁
추상 팩토리 패턴은 다음과 같은 상황에서 널리 사용됩니다:
- UI 라이브러리: 다크모드/라이트모드 버튼, 입력창 등 일관된 테마 적용
- DB 드라이버: Oracle용/ MySQL용 DAO 클래스
- 메시징 모듈: Kafka용 Producer, RabbitMQ용 Consumer
- 게임 개발: 테마 별 몬스터 + 무기 + 배경 세트 생성
✨ 마무리
추상 팩토리 패턴은 제품군을 일관성 있게 구성하고, 코드 확장성과 재사용성을 높이는 데 매우 유용합니다.
느슨한 결합 구조를 유지하면서 브랜드/환경에 따른 객체 세트를 만들어야 한다면, 이 패턴을 꼭 고려해보세요!
'IT > JAVA' 카테고리의 다른 글
| 🧱 1. 프로토타입 패턴이란? (0) | 2025.05.30 |
|---|---|
| 🧱 자바 디자인 패턴 - 빌더 패턴 완전 정복 (0) | 2025.05.30 |
| 💡 Java 디자인 패턴 시리즈: 팩토리 패턴 (Factory Pattern) 실무 예제로 배우기 (0) | 2025.05.30 |
| Java Stream 다양한 생성방법 (0) | 2024.03.08 |
| Java Stream Operation 기능 #1 (0) | 2024.03.06 |
Comments
