设计模式之 工厂模式上–简单工厂

所谓工厂模式,就是将生产某些对象的工作,统一放到一个类中来完成,这个类就形象的叫做工厂,这种设计模式就叫做工厂模式。

比如一个鞋厂,生产鞋子,不管是男鞋、女鞋、童鞋,还是各种尺码、各种颜色的鞋子,都是从鞋厂生产的,我们在代码上,也是如此,将一系列产品交给一个类建造出来,就像是放到一个工厂里,统一建造,输出,这就是工厂模式了。

工厂模式也分多种,我们常见的分类方式分为:简单工厂、工厂方法和抽象工厂。

我们这一节主要来学习简单工厂,简单工厂也叫静态工厂,特点是所有生产逻辑都放在工厂中完成。

我们以不同果汁生产的例子来演示。

1、先定义一个果汁接口,规定所有果汁,统一的生产方式

package com.itzhimei.study.design.factory.simple;

/**
 * www.itzhimei.com
 * 果汁接口
 */
public interface IFruitsJuice {

    /**
     * 定义果汁方法
     * @return
     */
    String getFruitsJuice();
}

2、定义苹果汁

package com.itzhimei.study.design.factory.simple;

/**
 * www.itzhimei.com
 * 苹果汁
 */
public class AppleJuice implements IFruitsJuice {
    @Override
    public String getFruitsJuice() {
        return "苹果汁";
    }
}

3、定义橙汁

package com.itzhimei.study.design.factory.simple;

/**
 * www.itzhimei.com
 * 橙汁
 */
public class OrangeJuice implements IFruitsJuice {
    @Override
    public String getFruitsJuice() {
        return "橙汁";
    }
}

4、下来来是最重要的工厂类了

package com.itzhimei.study.design.factory.simple;

/**
 * www.itzhimei.com
 * 果汁工厂
 */
public class FruitsJuiceFactory {

    /**
     * 负责生产指定口味的果汁
     * @param type
     * @return
     */
    public static IFruitsJuice getFruitsJuice(int type) {
        if(type ==1) {
            return new AppleJuice();
        } if(type ==2) {
            return new OrangeJuice();
        }
        return null;
    }
}

生产哪种类型的果汁,就是在工厂中通过传入参数来判断生产的。

5、测试类

package com.itzhimei.study.design.factory.simple;

/**
 * www.itzhimei.com
 * 测试
 */
public class Client {

    public static void main(String[] args) {
        IFruitsJuice apple = FruitsJuiceFactory.getFruitsJuice(1);
        IFruitsJuice orange = FruitsJuiceFactory.getFruitsJuice(2);
        System.out.println(apple.getFruitsJuice());
        System.out.println(orange.getFruitsJuice());
    }
}

输出结果:

苹果汁
橙汁

类关系图:

简单工厂本身学习起来也是非常简单的,动手写一写吧。