반응형
팩토리 메서드 패턴과 유사해서 구분이 애매한 패턴인 추상 팩토리 패턴에 대해 소개하고자 한다.
( 팩토리 메서드 패턴 : makedotworld.tistory.com/44 )
팩토리 메서드 패턴과 공통점으로는, 객체 생성을 하고자 할때 객체에 대한 구상 형식을 알 필요가 없이, 추상 형식만 알면 된다는 점이다.
예를 들면, 팩토리 메서드 패턴에서 PIzza 가 추상 형식이고, PotatoPizza 가 구상 형식이 된다.
하지만 방법에서의 차이점이 있다.
팩토리 메서드 패턴은 Client 가 Creator 를 상속하여 팩토리 메서드를 Override 함으로써 Client 가 원하는 객체를 만든다.
추상 팩토리 패턴은 interface 로 선언되어 있는 Creator 를 Implement 하여, 추상 형식의 객체를 만드는 함수를 Override 하여, 구상 형식의 객체를 리턴하도록 구현한 다음 Interface 의 추상 메서드를 사용해서 객체를 만드는 방식이다.
이런 방식 때문에 팩토리 메서드 패턴은 어떤 구상 클래스를 객체 생성의 대상으로 필요로 할지 알 수 없는 경우 유용하다.
추상 팩토리 패턴 같은 경우는 일련의 제품군 들을 관리할 경우 수정에 유용하다. ( 새로운제품을 추가하기 위해서는 인터페이스를 바꾸는 작업이 필요하기 때문 )
패턴은 아래와 같다.
출처:위키백과
두 패턴은 같은 제품을 생산하는 코드를 두가지 방식으로 구현하고, 어떤 부분을 수정하기에 용이한지 확인하는 방식으로 이해를 하는 편이 정확할 것 같다.
반응형
'개발자의 길' 카테고리의 다른 글
[Python3] Nested function, First class function, Closure function 이란 무엇인가? (0) | 2022.03.06 |
---|---|
[Java][SpringBoot] "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의노트 (0) | 2021.12.22 |
[Design pattern] 팩토리 메서드 패턴 ( Factory method pattern ) (0) | 2020.08.30 |
[C++] C++에서 문자열 줄단위로 받기 (0) | 2018.09.29 |
[C++] C++에서 string 문자열을 받아와 split 하기 (0) | 2018.09.15 |