public interface Pizza {
public void make();
}
public interface PizzaStore {
public Pizza orderPizza(String item);
}
public class NYStyleCheesePizza implements Pizza{
@Override
public void make() {
System.out.println("NYStyleCheesePizza is making..");
}
}
public class NYStyleVeggiePizza implements Pizza {
@Override
public void make() {
System.out.println("NYStyleVeggiePizza is making..");
}
}
public class ChicagoStyleCheesePizza implements Pizza{
@Override
public void make() {
System.out.println("ChicagoStyleCheesePizza is making..");
}
}
public class ChicagoStyleVeggiePizza implements Pizza{
@Override
public void make() {
System.out.println("ChicagoStyleVeggiePizza is making..");
}
}
public class NYPizzaStore implements PizzaStore {
@Override
public Pizza orderPizza(String item) {
Pizza pizza = null;
if (item.equals("cheese")) {
pizza = new NYStyleCheesePizza();
} else if (item.equals("veggie")) {
pizza = new NYStyleVeggiePizza();
} else {
throw new UnsupportedOperationException();
}
pizza.make();
return pizza;
}
}
public class ChicagoPizzaStore implements PizzaStore {
@Override
public Pizza orderPizza(String item) {
Pizza pizza = null;
if (item.equals("cheese")) {
pizza = new ChicagoStyleCheesePizza();
} else if (item.equals("veggie")) {
pizza = new ChicagoStyleVeggiePizza();
} else {
throw new UnsupportedOperationException();
}
pizza.make();
return pizza;
}
}
public class PizzaTestDrive {
public static void main(String[] args) {
PizzaStore nyStore = new NYPizzaStore();
nyStore.orderPizza("cheese");
PizzaStore chicagoStore = new ChicagoPizzaStore();
chicagoStore.orderPizza("cheese");
}
}
public interface Dough {
public String doughType();
}
public class ThickCrustDough implements Dough{
@Override
public String doughType() {
return "ThickCrustDough";
}
}
public class ThinCrustDough implements Dough {
@Override
public String doughType() {
return "ThinCrustDough";
}
}
public interface Sauce {
public String sauceType();
}
public class MarinaraSauce implements Sauce {
@Override
public String sauceType() {
return "MarinaraSauce";
}
}
public class PlumTomatoSauce implements Sauce {
@Override
public String sauceType() {
return "PlumTomatoSauce";
}
}
public interface PizzaIngredientFactory {
public Dough createDough();
public Sauce createSauce();
}
public class NYPizzaIngredientFactory implements PizzaIngredientFactory{
@Override
public Dough createDough() {
return new ThickCrustDough();
}
@Override
public Sauce createSauce() {
return new MarinaraSauce();
}
}
public class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory{
@Override
public Dough createDough() {
return new ThinCrustDough();
}
@Override
public Sauce createSauce() {
return new PlumTomatoSauce();
}
}
public class NYPizzaStore {
private PizzaIngredientFactory ingredientFactory;
public NYPizzaStore() {
ingredientFactory = new NYPizzaIngredientFactory();
}
public void makePizza() {
Dough dough = ingredientFactory.createDough();
Sauce sauce = ingredientFactory.createSauce();
System.out.println(dough.doughType());
System.out.println(sauce.sauceType());
}
}
public class NYPizzaStoreTestDrive {
public static void main(String[] args) {
NYPizzaStore nyPizzaStore = new NYPizzaStore();
nyPizzaStore.makePizza();
}
}
网友评论