•
객체의 생성과 사용은 분리되어야할 때가 있다. 이를 위해 팩토리 패턴을 사용해 객체를 사용만 하는 객체에게 생성의 부담을 덜어줄 수 있다.
◦
생성을 무분별하게할 경우, 원치 않는 사이드 이펙트가 발생할 수 있다.
•
인터페이스를 기반으로 다형성을 활용한 팩토리 패턴을 사용하면 변경에 닫혀있고 확장에 열려있는 유연한 코드를 짤 수 있다.
•
단순히 객체 생성의 책임을 다른 객체에게 위임하는 것이다. 이때 Factory라는 네이밍을 사용하므로 Simple Factory라고 부른다.
Pizza orderPizza(String type){
Pizza pizza;
if(type.equals("cheese")){
pizza = new CheesePizza()
} else if(type.equals("greel"){
pizza = new GreekPizza();
} else if (type.equals("pepperoni"){
pizza = new PepperopniPizza();
} else if (type.equals("clam"){
pizza = new ClamPizza();
} else if (type.equals("veggie"){
pizza new VeggiePizza();
}
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
Java
복사
public class PizzaStore{
SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory){
this.factory = factory;
}
Pizza orderPizza(String type){
Pizza pizza;
pizza = factory.createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
}
Java
복사