-
[Java 언어로 배우는 디자인 패턴 입문]Ch4. Factory MethodDevelopment/[디자인패턴] 2019. 6. 18. 16:59반응형SMALL
Factory Method
하위 클래스에서 인스턴스 작성하기
객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 합니다.
출처: Java 언어로 배우는 디자인 패턴 입문 실제 예제의 다이어그램을 보겠습니다.
framework package에 있는 Factory class와 Product class는 모두 추상 클래스입니다.
그리고 idcard package에 있는 IDCardFactory와 IDCard가 각각 상속해서 실제 구현을 했습니다.
Factory class의 구현은 아래와 같습니다.
public abstract class Factory { public final Product create(String owner) { Product p = createProduct(owneer); registerProduct(p); return p; } protected abstract Product createProduct(String owener); protected abstract void registerProduct(Product product); }
추상화 클래스에서는 실제 구현 부분인 IDCard 클래스에 대한 참조가 전혀 없습니다. Product에 대한 참조만 있을 뿐입니다. IDCard는 Product를 상속받아서 구현을 했기에 사용에 문제가 없습니다.
사용되는 코드를 살펴보겠습니다.
import framework.*; import idcard.* public class Main { public static void main(String[] args) { Factory factory = new IDCardFactory(); Product card1 = factory.create("홍길동"); Product card2 = factory.create("이순신"); Product card3 = factory.create("강감찬"); card1.use(); card2.use(); card3.use(); } }
Product 객체를 생성하는 부분이 main이 아닌 Factory 클래스(서브클래스)입니다.
반응형LIST'Development > [디자인패턴]' 카테고리의 다른 글
[Java 언어로 배우는 디자인 패턴 입문]Ch17. Observer (0) 2019.07.08 [Java 언어로 배우는 디자인 패턴 입문]Ch07. Builder (0) 2019.06.26 [Java 언어로 배우는 디자인 패턴 입문]Ch15. Facade (0) 2019.06.21