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
- Resilinece4j
- The law of Demeter
- 타입스크립트
- Action Pattern
- 체인 패턴
- 스프링 배치
- MSA
- spring batch
- 생산자 소비자 패턴
- 멀티스레드
- java 정렬
- 배치
- Transaction Pattern
- 알고리즘
- saga pattern
- 키클락
- JPA
- 디자인패턴
- Parallel Old GC
- thread
- TypeScript
- 사가 패턴
- 디자인 패턴
- 스레드
- spring cloud
- Spring Cloud Netfilx Eureka
- Spring Boot Actuator
- Serial GC
- Java
- zipkin
Archives
- Today
- Total
PSD( Private-Self-Development )
팩토리 메서드 패턴 본문
팩토리 메서드 패턴?
팩토리 패턴의 확장 패턴으로 팩토리 패턴 과 템플릿 메서드 패턴이 결합된 패턴이다.
부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하고
자식 클래스 들이 생성될 객체들의 유형을 변경 할 수 있도록 하는 생성 패턴이다.
팩토리 메서드 패턴의 장점
- 객체간의 느슨한 결합 구현
- 단일 책임의 원칙
- 개방/폐쇠의 원칙
=> 객체 재사용성이 높다
팩토리 메서드 패턴의 단점
- 패턴을 구현하기 위함 자식 클래스를 구현해야 하므로 코드가 복잡해 질 수 있다.
=> 기존 생성 클래스의 계층 구조에 패턴을 도입하는게 BEST!
팩토리 메서드 구현
public abstract class Factory {
public Product creat( String brand ){
return createProduct(brand);
}
public abstract Product createProduct(String brand);
}
public class ProductFactory extends Factory{
@Override
public Product createProduct(String brand) {
if( "samsung".equal( brand ) ){
return new SamsungProduct();
} else if( "lg".equal( brand ) ){
return new LgProduct();
}
}
}
언제 사용하면 좋을 까?
- 작성해야하는 객체들의 정확한 유형과 의존관계를 미리 알 수 없는 경우
- 내부 컴포넌트를 확장할 경우가 생길 여부가 있을 경우
- 객체 재사용성을 높이고 싶을 경우
참조