와챠의 우당탕탕 코딩 일기장
[JAVA 디자인 패턴] - 4, Factory Method 패턴 본문
Factory Method Pattern
Factory Method 패턴은
상위 클래스에서 추상적인 공장과 추상적인 제품을 만들고(공장과 제품이 갖춰야 할 틀을 만들고),
하위 클래스에서 구체적인 공장과 구체적인 제품을 만드는 패턴이다.
그리고 이 패턴은 디자인 패턴 3번째에서 배운 Template Method 패턴의 응용이다.
(제품 생산의 큰 흐름을 결정하는 Factory Method)
예제로는 추상적인 공장을 상속받아 과자 공장 클래스를 만들고,
추상적인 제품을 상속받아 행운 번호를 갖고 있는 과자 클래스를 만들어 보았다.
- framework 패키지 = 추상적인 틀을 결정하는 클래스들의 모음
- Factory 클래스 = 공장이 갖추어야 할 틀을 가진 추상 클래스
- create 메소드 = 제품 생산의 큰 흐름을 결정하는 Factory Method
- Product 클래스 = 제품이 갖추어야 할 틀을 가진 추상 클래스
- Factory 클래스 = 공장이 갖추어야 할 틀을 가진 추상 클래스
- snack 패키지 = 구체적인 내용을 결정하는 클래스들의 모음
- SanckFactory 클래스 = 과자를 생산하는 과자 공장 클래스, 제품을 생산하고, 행운 번호를 저장, 관리함
- Sanck 클래스 = 행운 번호를 가진 과자 클래스
framework의 Factory 클래스와 Product 클래스를 상속받으면
행운 번호를 가진 어떠한 제품이라도 만들 수 있고,
그 제품을 생산하는 공장도 얼마든지 쉽게 지을 수 있다.
예를 들면 framwoek 패키지 안의 추상적인 제품과 공장 클래스를 상속받아
refrigerator 패키지에 행운 번호를 가진 냉장고와, 그 냉장고를 생산하는 냉장고 공장도 같은 흐름대로 만들 수 있다.
Factory Method 패턴의 장점
추상적인 공장, 제품(framwoek 패키지)과
구체적인 공장, 제품(snack 패키지)을 분리함으로써 얻어지는 장점
- 추상적인 공장과 제품 클래스의 수정 없이 다른 구체적인 공장과 제품을 만들 수 있다.
- 클라이언트(Main)는 공장이 어떻게 돌아가는지 알지 못한다.
- (ex - Sanck 클래스를 수정한다 해도 Main에서는 오류가 날 일이 없다.)
또 다른 장점
- Template Method 패턴과 같이 제품의 생산 방법이 동일해진다(로직 공통화).
- (Factory Method인 create 메소드를 통해)
Factory Method 패턴과 Template Method 패턴의
같은 점 :
상위 클래스의 추상 메소드를 하위 클래스에서 구체화한다.
하위 클래스들이 상속받은 추상 메소드를 어떻게 정의하든,
하나의 큰 흐름으로 흐르게 하는 메소드가 있다. (Factory Method, Template Method)
(ex - 위 예제의 Factory Method인 create 메소드는 제품을 생산하고 행운 번호 저장한다는 큰 흐름을 가지고 있음)
다른 점 :
Factory Method 패턴 - Factory Method는 큰 흐름을 결정하면서 인스턴스(Product, 제품)도 함께 생산한다.
Template Method 패턴 - Template Method는 큰 흐름만 결정하고 그 안에서 인스턴스를 생성하진 않는다.
JAVA 언어로 배우는 디자인 패턴 입문(p 84~94) 참고
'코딩 일기장 > JAVA 디자인 패턴' 카테고리의 다른 글
[JAVA 디자인 패턴] - 6, Strategy 패턴 (0) | 2020.11.09 |
---|---|
[JAVA 디자인 패턴] - 5, Singleton 패턴 (0) | 2020.10.02 |
[JAVA 디자인 패턴] - 3, Template Method 패턴 (0) | 2020.09.22 |
[JAVA 디자인 패턴] - 2, Adapter 패턴 (0) | 2020.09.16 |
[JAVA 디자인 패턴] - 1, Iterator 패턴 (0) | 2020.09.13 |