一天一个设计模式-- 简单工厂模式

156 阅读1分钟

简单工厂模式

  • 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由工厂对象决定创建哪一种产品类实例。简单工厂模式是工厂模式箭镞中最简单使用的模式。
  • 简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为
  • 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式。

实例

pizza 类:
public class pizza {

    private String pizzaName;

    public pizza(String pizzaName) {
        this.setPizzaName(pizzaName);
    }

    void prepare() {
        System.out.println("准备pizza");
    }

    void bake() {
        System.out.println("烤" + this.getPizzaName());
    }

    void cut() {
        System.out.println("切pizza");
    }

    void box() {
        System.out.println("打包pizza");
    }

    public String getPizzaName() {
        return pizzaName;
    }

    public void setPizzaName(String pizzaName) {
        this.pizzaName = pizzaName;
    }
}

cheesePizza类
public class CheesePizza extends pizza {


    public CheesePizza(String pizzaName) {
        super(pizzaName);
    }


}
pipperPizza类
public class PiepperPizza extends pizza {


    public PiepperPizza(String pizzaName) {
        super(pizzaName);
    }


}
OrderPizza类
public class OrderPizza {

    public OrderPizza(SimplePizzaFactory factory) {
        setFactory(factory);
    }

    public  void setFactory(SimplePizzaFactory factory) {
        String pizzaType = null;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请问想点什么pizza");
        pizzaType = scanner.next();
        pizza pizza = factory.create(pizzaType);
        if (pizza != null) {
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
        } else {
            System.out.println("没有订购");
        }

    }


}

SimplePizzaFactory 类  // 创建某类的实体对象
public class SimplePizzaFactory {

    public pizza create(String  pizaType) {
        do {
            if ("CheesePizza".equals(pizaType)) {
                return  new CheesePizza(pizaType);
            } else if ("PiepperPizza".equals(pizaType)) {
                return new PiepperPizza(pizaType);
            } else {
                break;
            }
        } while (true);
        return null;
    }


}
client 类
public class Client {

    public static void main(String[] args) {
        new OrderPizza(new SimplePizzaFactory());
    }
}