美文网首页
工厂模式 和抽象工厂

工厂模式 和抽象工厂

作者: 莫库施勒 | 来源:发表于2019-08-02 18:41 被阅读0次
    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();
        }
    }
    

    相关文章

      网友评论

          本文标题:工厂模式 和抽象工厂

          本文链接:https://www.haomeiwen.com/subject/zcjrdctx.html