객체지향 방 굽기 느슨한 결합을 이용하여 객체지향 디자인을 만들게 된다.
수많은 if else문을 통하여 객체를 생성하게 된다. 만약 내용이 추가되거나 삭제되면 원본 클래스를 수정하므로
서브클래스 팩토리 클래스를 만들어 그쪽에서만 관리하게 만들어 준다.
SimplePizzaFactory
public class SimplePizzaFactory { public Pizza createPizza(String type){ Pizza pizza = null; if(type.equals("cheese")){ pizza = new CheesePizza(); }else if(type.equals("clam")){ pizza = new ClamPizza(); } return pizza; } }
PizzaStore
public class PizzaStore { SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory factory){ this.factory = factory; } public Pizza orderPizza(String type){ Pizza pizza; pizza = createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } }
PizzaStore에서 SimplePizzaFactory를 통해서 만들도록 세부화 한 것이다. PizzaStore에 원래 포함되어도 되는 코드이지만
수정삭제할 경우 SimplePizzaFactory만 수정하면 되기 때문이다. SimplePizzaFactory는 Pizza 추상클래스에 의존하고 있다.
수정삭제할 경우 SimplePizzaFactory만 수정하면 되기 때문이다. SimplePizzaFactory는 Pizza 추상클래스에 의존하고 있다.