zoukankan      html  css  js  c++  java
  • 设计模式之工厂方法和抽象工厂

    简单工厂不是工厂模式,只是一种用法的习惯。

    工厂方法模式:定义了一个创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。(可以说工厂方法是一个特殊的模板方法)

    public abstract class PizzaStore{

      public Pizza orderPizza(String type){

        Pizza pizza;

        pizza=createPizza(type);

        pizza.pareare();

        pizza.bake();

        pizza.cut();

        pizza.box();

        return pizza;

      }

      protected abstract Pizza createPizza(Stirng type);       //客户程序中关于超类的代码和子类对象创建代码解耦了

    }

    pizza的种类如果有很多的话,我们将它抽象化,把它设计成一个接口或者是一个抽象的类(使用依赖倒置原则将向下的依赖倒置成向上的依赖,pizza的子类依赖pizza)。

    遵从OO设计中的指导方针:

      变量不可以持有具体类的引用。

      不要让类派生自具体类。

      不要覆盖基类中已实现的方法。

    当我们的pizza的工厂需要做的原料不相同该怎么办,那不我们为每种pizza的原料创建一种工厂。

    我们可以为工厂定义一个接口,这个接口负责创建所有的原料:

    public interface PizzaIngredienFactory{

      public Dough createDough();

      public Sauce createSauce();

      public Cheese createCheese();

      public Veggies[] createVeggies();

    }

    抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

  • 相关阅读:
    Interesting Finds: 2008.03.19
    Interesting Finds: 2008.03.11
    Interesting Finds: 2008.03.27
    Interesting Finds: 2008.03.21
    每日日报
    每日日报
    每日日报
    每日日报
    idea怎么创建properties文件
    移动端rem.js
  • 原文地址:https://www.cnblogs.com/LvLoveYuForever/p/5799532.html
Copyright © 2011-2022 走看看