Pizza Store---Factory Pattern
Let's say you have a pizza shop,and a cutting-edge pizza store owner in
Objectville you might end up writing some code like this:
Pizza orderPizza(){
Pizza pizza=new Pizza();

pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
But you need more than one type of pizza..
So we build a SimplePizzaFactory
public class SimplePizzaFactory{
public Pizza createPizza(String type){
Pizza pizza=null;
if(type.equals("cheese")){
pizza=new CheesePizza();
} else if(type.equals("pepperoni")){
pizza=new PepperoniPizza();
} else if(type.equals("clam")){
pizza=new ClamPizza();
} else if (type.equals("veggie")){
pizza=new VeggiePizza();
}
return pizza;
}
}
The Simple Factory isn't actually a Design Pattern;it is more of a programming idiom.(Factory Method)
Then you got store in NY and Chicago and the pizza they made has different style.
public acstract class PizzaStore{

public Pizza orderPizza(String type){
Pizza pizza;
pizza=createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}

protected abstract Pizza createPizza(String type);
}
public class NYStylePizzaStore extends PizzaStore{
public Pizza createPizza(String item){
if(type.equals("cheese")){
return new NYStyleCheesePizza();
} else if(item.equals("pepperoni")){
return new NYStylePepperoniPizza();
} else if(item.equals("clam")){
return new NYStyleClamPizza();
} else if (item.equals("veggie")){
return new NYStyleVeggiePizza();
} else return null;
}
}
Order NYStyle cheese pizza:
public class PizzaTest{
public stactic void main(String[] args){
PizzaStore nyStore=new NYPizzaStore();
Pizza pizza=nyStore.orderPizza("cheese");
}
}
Objectville you might end up writing some code like this:
Pizza orderPizza(){
Pizza pizza=new Pizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
} So we build a SimplePizzaFactory
public class SimplePizzaFactory{
public Pizza createPizza(String type){
Pizza pizza=null;
if(type.equals("cheese")){
pizza=new CheesePizza();
} else if(type.equals("pepperoni")){
pizza=new PepperoniPizza();
} else if(type.equals("clam")){
pizza=new ClamPizza();
} else if (type.equals("veggie")){
pizza=new VeggiePizza();
}
return pizza;
}
}
The Simple Factory isn't actually a Design Pattern;it is more of a programming idiom.(Factory Method)
Then you got store in NY and Chicago and the pizza they made has different style.

public acstract class PizzaStore{
public Pizza orderPizza(String type){Pizza pizza;
pizza=createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
protected abstract Pizza createPizza(String type);
}
public class NYStylePizzaStore extends PizzaStore{
public Pizza createPizza(String item){
if(type.equals("cheese")){
return new NYStyleCheesePizza();
} else if(item.equals("pepperoni")){
return new NYStylePepperoniPizza();
} else if(item.equals("clam")){
return new NYStyleClamPizza();
} else if (item.equals("veggie")){
return new NYStyleVeggiePizza();
} else return null;
}
}
Order NYStyle cheese pizza:
public class PizzaTest{
public stactic void main(String[] args){
PizzaStore nyStore=new NYPizzaStore();
Pizza pizza=nyStore.orderPizza("cheese");
}
}

浙公网安备 33010602011771号