코드에서 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 |