본문 바로가기
Design Pattern

팩토리 패턴(Factory Pattern)

by 밍상 2023. 9. 14.

코드에서 new를 사용하게 되면 인스턴스를 만드는 구상 클래스를 선택해야 됩니다.

public Pizza orderPizza(String type){
    if(type.equals("cheese")){
        return new CheesePizza();
    }
    if(type.equals("potato")){
        return new PotatoPizza();
    }
}

 

객체 생성을 처리하는 클래스를 팩토리(Factory)라고 부릅니다.

팩토리는 디자인 패턴이라기 보다는 프로그래밍에서 자주 쓰이는 관용구에 가깝습니다.

public class PizzaFactory {

    public Pizza createPizza(String type){
        if(type.equals("cheese")){
            return new CheesePizza();
        }
        if(type.equals("Potato")){
            return new PotatoPizza();
        }
        return null;
    }
}

아래 코드처럼 팩토리 메서드를 추상 메서드로 선언해서 사용할 수도 있습니다.

public abstract class PizzaStore {
    abstract Pizza createPizza(String type);
}

 

팩토리 메소드 패턴(Factory Method Pattern)에서는

  • 객체를 생성할 떄 필요한 인터페이스를 만듭니다.
  • 어떤 인스턴스를 만들지는 서브클래스에서 결정합니다.

 

장점

  • 객체 생성 코드를 한 객체 또는 메소드에 넣어서 중복을 제거할 수 있습니다.
  • 인터페이스 기반 프로그래밍이 가능해 유연성과 확장성이 뛰어난 코드를 만들 수 있습니다.

 

출처

에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠. 『헤드퍼스트 디자인패턴 개정판』. 한빛미디어, 2022

 

'Design Pattern' 카테고리의 다른 글

커맨드 패턴 (Command Pattern)  (0) 2023.09.27
싱글턴 패턴(Singleton Pattern)  (2) 2023.09.25
데코레이터 패턴(Decorator Pattern)  (2) 2023.09.11
옵저버 패턴(Observer Pattern)  (0) 2023.09.07
전략 패턴(Strategy Pattern)  (0) 2023.09.06