ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java 언어로 배우는 디자인 패턴 입문]Ch4. Factory Method
    Development/[디자인패턴] 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

    댓글

Designed by Tistory.