`
public abstract class Pizza {
String name;
String dough;//面团
String sauce;
Veggies[] veggies;
Cheese cheese;
Pepperoni pepperoni;
Clams clams;
abstract void prepare();
void bake(){
System.out.println("烘烤");
}
void cut(){
System.out.println("切片");
}
void box(){
System.out.println("包装");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return " pizza ";
}
}
public class CheesePizza extends Pizza{
PizzaIngredientFactory ingredientFactory;
public CheesePizza(PizzaIngredientFactory ingredientFactory) {
this.ingredientFactory = ingredientFactory;
}
@Override
void prepare() {
System.out.println("Preparing"+name);
dough=ingredientFactory.createDough();
sauce=ingredientFactory.createSauce();
cheese=ingredientFactory.createCheese();
}
}
public interface PizzaIngredientFactory {
String createDough();
String createSauce();
Cheese createCheese();
Clams createClams() ;
}
public class NYPizzaStore extends PizzaStore{
Pizza pizza=null;
PizzaIngredientFactory ingredientFactory=new NYPizzaIngredientFactory();
public Pizza createPizza(String item) throws IllegalAccessException, InstantiationException {
if (item.equals("cheese")){
pizza=new CheesePizza(ingredientFactory);
}
return pizza;
}
}
`