JAVA/DesignPattern

Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴

호두밥 2021. 12. 7. 00:25

팩토리 Factory 란?

팩토리는 객체의 생성만을 전담하는 객체입니다.

Interface를 구현한 클래스가 여러 개인 경우 외부에서 각 상황에 맞는 클래스를 찾아 인스턴스를 생성해주어야 하는 불편함을 해결해주는 패턴입니다. 즉 Factory에서 각 상황에 맞는 클래스를 찾아서 객체를 생성해주도록 합니다.

팩토리 Factory 패턴 사용

  • 클래스가 만들어야 하는 개체 유형(타입)을 미리 알 수 없는 경우
  • 클래스를 특정하기 위한 서브 클래스가 필요한 경우
  • 복합한 클래스 구조를 단순화하기 위한 경우

팩토리 패턴 구현 예시

아래와 같이 애완동물을 생성하는 기능을 담당하는 객체를 Factory라고 합니다. 애완동물을 생성하려고 한다면 아래와 같이 new를 이용해서 생성해주어야 합니다. 

애완동물 꾼이 = new 애완동물("꾼이", new Cat());

 팩토리를 사용한다면 아래와 같이 생성할 수 있습니다.

애완동물Factory pet = new 애완동물Factory();

애완동물 꾼이 = pet.createCat("꾼이");

 

애완동물 Factory 내부 소스

public class 애완동물Factory {

	public 애완동물 createCat(String name){
    	return new 애완동물(name, new Cat());
    }

    public 애완동물 createDog(String name){
            return new 애완동물(name, new Dog());
    }

    public 애완동물 createParrot(String name){
            return new 애완동물(name, new Parrot());
    }

}

 

 

참조

*https://www.sitepoint.com/understanding-the-factory-method-design-pattern/

*https://www.tutorialspoint.com/design_pattern/factory_pattern.htm