工厂模式

2017-04-23  本文已影响0人  yl1415

背景

工厂模式,顾名思义,就是生产对象的一种方式。传统使用new的方法有一些弊端:耦合问题,构造参数太多后不便等。

下面我们从一个示范,来看看使用new会遇到哪些问题。

public interface Pizza {
    void prepare();
    void bake();
    void cut();
    void box();
}
public class CheesePizza implements Pizza {
    public void prepare() {}
    public void bake() {}
    public void cut() {}
    public void box() {}
}
    Pizza orderPizza(String type) throws Exception {
        Pizza pizza;
        // 当增加/删除特定类型的pizza时, 这里的代码会频繁改动
        if (type.equals("cheese")) {
            pizza = new CheesePizza();
        } else if (type.equals("greek")) {
            pizza = new GreekPizza();
        } else {
            throw new Exception("no type pizza. type=" + type);
        }
        // 下面的部分代码不会改变
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }

将频繁改动的代码封装起来

public class SimplePizzaFactory {
    public Pizza createPizza(String type) throws Exception {
        Pizza pizza;
        // 当增加/删除特定类型的pizza时, 这里的代码会频繁改动
        if (type.equals("cheese")) {
            pizza = new CheesePizza();
        } else if (type.equals("greek")) {
            pizza = new GreekPizza();
        } else {
            throw new Exception("no type pizza. type=" + type);
        }
        return pizza;
    }
}

以上封装有几点说明如下:

工厂模式定义

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

工厂模式类图如下:todo

上一篇 下一篇

猜你喜欢

热点阅读