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");
       }

}

posted on 2007-06-16 11:54  ewan  阅读(186)  评论(0)    收藏  举报

导航