美文网首页
工厂模式

工厂模式

作者: 凯俊 | 来源:发表于2019-03-27 09:03 被阅读0次
    要依赖抽象,不要依赖具体类

    工厂方法模式定义了一个创建对象的接口(这里并不特指接口,通常说针对接口编程,更接近于针对超类(父类)编程,而超类型通常是接口或者是一个抽象类),但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

    public abstract class Pizza {
        String name;
        String dough;
        String sauce;
        ArrayList toppings = new ArrayList();
    
        void prepare() {
            // balabala
        }
    
        void bake() {
            // balabala
        }
    
        void cut() {
            // balabala
        }
    
        void box() {
            // balabala
        }
    
        public String getName() {
            return name;
        }
    }
    
    public abstract 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 NYStyleCheesePizza extends Pizza {
        public NYStyleCheesePizza() {
            name = "NY Style Sauce and Cheese Pizza";
            // ...
            toppings.add("Grated Reggiano Cheese");
        }
    }
    
    public class NYPizzaStore extends PizzaStore {
        Pizza createPizza(String item) {
            if (item.equals("cheese")) {
                return new NYStyleCheesePizza();
            }
            // balabala...
        }
    
        // 如果需要的话,还可以重写Pizza里面的方法
        void cut() {
            System.out.println("把Pizza切成正方形");
        }
    }
    
    PizzaStore nyPizzaStore = new NYPizzaStore();
    nyPizzaStore.orderPizza("cheese");
    
    

    相关文章

      网友评论

          本文标题:工厂模式

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