250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 티스토리챌린지
- 자율학습
- 네트워크
- Proxy Object
- 혼공
- 0 시작
- java
- 혼공컴운
- 혼공학습단
- 스프링 부트 3
- Functional Interfaces
- literal
- 나도코딩
- Interface
- cluster index
- noncluster index
- types
- Spring Data JPA
- 인프런
- Wildcard
- Access Modifier
- 접근제어자
- dotnet
- HashMap
- Lazy loading
- 혼공자바
- 접근 제어자
- 인터페이스
- entrySet
- 오블완
Archives
- Today
- Total
지금을 사는 사람
팩토리 패턴 (Factory Pattern) 본문
728x90
소개:
소프트웨어 디자인에서 객체 생성 부분을 캡슐화하고, 클라이언트 코드로부터 객체의 생성을 분리해내는 Factory Pattern은 유연하고 확장 가능한 코드를 작성하는 데 기여합니다. 이 블로그에서는 Factory Pattern에 대해 자세히 알아보겠습니다.
1. Factory Pattern이란?
- 개념:
- Factory Pattern은 객체 생성을 처리하는 인터페이스를 정의하고, 객체의 생성을 서브 클래스에 위임하여 객체 생성을 캡슐화하는 디자인 패턴입니다.
- 목적:
- 객체 생성 코드를 클라이언트 코드로부터 분리하여 코드 유지보수성을 향상시키고, 객체 생성 로직의 확장을 용이하게 합니다.
2. Factory Pattern의 구성 요소
- Product(제품):
- 생성될 객체의 인터페이스를 정의합니다.
- ConcreteProduct(구체적인 제품):
- Product 인터페이스를 구현하는 클래스로, 실제로 생성되는 객체를 나타냅니다.
- Creator(창조자):
- 제품을 생성하는 메서드를 선언하는 인터페이스 또는 추상 클래스입니다.
- ConcreteCreator(구체적인 창조자):
- 제품을 생성하는 구체적인 팩토리 클래스로, 실제로 객체를 생성합니다.
3. Factory Pattern의 구현 예시
// Product 인터페이스
interface Product {
void operation();
}
// ConcreteProduct 구현
class ConcreteProductA implements Product {
@Override
public void operation() {
System.out.println("Operation in Product A");
}
}
// ConcreteProduct 구현
class ConcreteProductB implements Product {
@Override
public void operation() {
System.out.println("Operation in Product B");
}
}
// Creator 인터페이스
interface Creator {
Product createProduct();
}
// ConcreteCreator 구현
class ConcreteCreatorA implements Creator {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
// ConcreteCreator 구현
class ConcreteCreatorB implements Creator {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
4. Factory Pattern의 이점
- 유연성과 확장성:
- 클라이언트 코드는 구체적인 클래스를 알 필요 없이 인터페이스를 통해 객체를 생성할 수 있습니다. 새로운 제품이 추가되어도 클라이언트 코드 수정이 필요하지 않습니다.
- 코드 분리:
- 객체 생성 코드가 클라이언트 코드로부터 분리되므로, 코드 유지보수성이 향상되고 객체 생성 부분이 중앙집중화되어 변경이 용이해집니다.
5. Factory Method vs Abstract Factory
- Factory Method:
- 단일 메서드를 통해 하나의 제품을 생성합니다.
- Abstract Factory:
- 여러 제품이 함께 생성되는 패턴으로, 제품군을 생성하는 인터페이스를 제공합니다.
6. 사용 예시:
- 자바에서의 사용:
- JDBC에서의 Connection 객체 생성, GUI 라이브러리에서의 윈도우 생성 등 많은 자바 라이브러리에서 Factory Pattern이 활용됩니다.
7. 결론
Factory Pattern은 객체 생성을 캡슐화하여 코드 유연성과 확장성을 높이는 데 기여합니다. 코드의 수정이나 새로운 객체의 추가가 일어날 때, 해당 변경이 최소화되고 클라이언트 코드는 변경에 영향을 받지 않도록 하는 등의 장점을 제공합니다. 이는 객체지향 소프트웨어 디자인의 핵심 원칙 중 하나인 "개방/폐쇄 원칙"을 지키는 데 기여합니다.
728x90
'CS > 디자인패턴' 카테고리의 다른 글
빌더 패턴 (Builder Pattern) (0) | 2023.12.15 |
---|