학습 목표
- 팩토리 패턴의 정의와 목적을 설명할 수 있다.
- 팩토리 패턴을 활용해 객체 생성 과정을 캡슐화하고 코드를 개선할 수 있다.
- 팩토리 패턴이 실무에서 왜 유용한지 이해하고 사례를 들어 설명할 수 있다.
사전 기반 지식
- 객체 지향 프로그래밍: 클래스와 객체 생성에 대한 기본 개념
- 추상화: 인터페이스와 구현 클래스를 분리하는 개념
- 추상화란 이처럼 사용자에게는 필요한 기능(What)만 노출하고, 복잡한 내부 동작 원리(How)는 숨기는 설계 원칙을 말합니다.
- 다형성: 상위 인터페이스 타입으로 다양한 하위 구현 객체를 다루는 능력
💡
- 추상화 (Abstraction): '무엇'에 집중합니다.
- 복잡한 현실을 단순화하여 핵심적인 개념만 보여주는 데 목적이 있습니다.
- 사용자가 이해하기 쉽도록 불필요한 세부사항을 제거하는 설계 관점입니다.
// 사용자는 List가 어떻게 동작하는지 몰라도 된다.
// 그냥 add, get, size 메서드만 사용하면 된다.
List<String> list = new ArrayList<>();
list.add("A");
list.get(0);
list.size();
캡슐화 (Encapsulation): '어떻게 보호할 것인가'에 집중합니다.
데이터(속성)와 그 데이터를 처리하는 기능(메서드)을 하나로 묶고,
외부의 직접적인 접근으로부터 데이터를 보호하고 숨기는(정보 은닉) 데 목적이 있습니다.
캡슐화 예시: 데이터 보호
public class User {
private int age; // 외부에서 직접 접근 불가
// age를 설정하는 공개된 통로(메서드)
public void setAge(int age) {
if (age > 0) { // 유효성 검사: 데이터 보호
this.age = age;
}
}
}
실제 활용 사례
- 데이터베이스 연결: DBFactory.getConnection("MySQL"), DBFactory.getConnection("Oracle")처럼 문자열만으로 상황에 맞는 DB 커넥션 객체를 생성할 때 사용합니다.
- 결제 시스템: PaymentFactory.getPaymentGateway("CreditCard"), PaymentFactory.getPaymentGateway("PayPal") 등 다양한 결제 모듈을 생성할 때 사용됩니다.
- UI 컴포넌트 생성: UIFactory.createButton("Windows"), UIFactory.createButton("Mac")처럼 운영체제에 맞는 버튼 UI 객체를 생성할 때 활용할 수 있습니다.
핵심 요약
- 팩토리 패턴은 객체 생성 로직을 별도의 클래스로 캡슐화하여 클라이언트와 구현 클래스 간의 결합도를 낮추는 패턴입니다.
- 이를 통해 코드의 유지보수성과 확장성이 크게 향상되며, **단일 책임 원칙(SRP)**과 **개방-폐쇄 원칙(OCP)**을 지키는 데 도움이 됩니다.
- 클라이언트는 구체적인 클래스 이름(new Warrior())을 몰라도, 인터페이스와 팩토리를 통해 원하는 객체를 사용할 수 있습니다.
'JAVA' 카테고리의 다른 글
| 디자인 패턴 - 전략 패턴 (0) | 2025.10.02 |
|---|---|
| 디자인 패턴 - 어댑터 패턴 (0) | 2025.10.02 |
| 디자인 패턴 - 싱글톤 (0) | 2025.09.30 |
| 성능 최적화(HikariCP) 와 커넥션 풀이란? (0) | 2025.05.27 |
| JDBC 구성 요소(아키텍처) (0) | 2025.05.27 |