首页 > 其他 > 详细

创建型设计模式(一)工厂方法模式

时间:2020-06-19 18:51:01      阅读:129      评论:0      收藏:0      [点我收藏+]

文章更新时间:2020/06/19

一、一句话背景

我需要一辆汽车,那我可以直接从工厂里面提货,而不用去管汽车是怎么做出来的,以及生产汽车的具体实现,我只需要告诉这个工厂要生产什么品牌的汽车就好,具体的汽车生产流水线我也不用管。

二、使用场景

知道部分特性而创建具体对象的场景。

如:根据环境类型(dev,test或master等)直接调用一整套环境配置

优点:避免了许多无用的重复代码,统一由工厂类生成对象,便于代码管控和理解。

三、模型分析

技术分享图片

四、代码分析

各个品牌汽车的生产流水线(具体产品的生产流水线)

奥迪

/**
 * 奥迪车生产流水线
 */
public class AudiLine extends CarFactory {

    @Override
    public void produceCar() {
        //实现生产流水线接口定义的方法,生产奥迪车
        System.out.println("整台奥迪来开~");
    }
}

奔驰

/**
 * 奔驰车生产流水线
 */
public class BenzLine extends CarFactory {

    @Override
    public void produceCar() {
        //实现生产流水线接口定义的方法,生产奔驰车
        System.out.println("整台奔驰来开~");
    }
}

宝马

/**
 * 宝马车生产流水线
 */
public class BmwLine extends CarFactory {

    @Override
    public void produceCar() {
        //实现生产流水线接口定义的方法,生产宝马车
        System.out.println("整台宝马来开~");
    }
}

工厂

/**
 * 汽车生产工厂
 */
public abstract class CarFactory {

    /**
     * 生产汽车的方法【抽象方法】
     */
    public abstract void produceCar();

    /**
     * 获取对应的汽车生产线
     *
     * @param carBrand
     * @return
     */
    public CarFactory getCarFactory(String carBrand) throws Exception {
        if (carBrand == null) {
            return null;
        }
        if (carBrand.equalsIgnoreCase("bmw")) {
            //返回一个“宝马”的生产线
            return new BmwLine();
        } else if (carBrand.equalsIgnoreCase("benz")) {
            //返回一个“奔驰”的生产线
            return new BenzLine();
        } else if (carBrand.equalsIgnoreCase("audi")) {
            //返回一个“奥迪”的生产线
            return new AudiLine();
        } else {
            throw new Exception("没有对应品牌的生产线,无法生产!");
        }
    }

}

客户下单

/**
 * 工厂模式测试类【模拟下单】
 */
public class FactoryTest {
    public static void main(String[] args) throws Exception {
        //客户要买“宝马”车,工厂根据入参【需求】找到对应的生产线对象,并让他它生产汽车
        CarFactory bmwLine = CarFactory.getCarFactory("bmw");
        //调用“宝马”生产线的生产汽车方法
        bmwLine.produceCar();
    }
}

 技术分享图片

 

创建型设计模式(一)工厂方法模式

原文:https://www.cnblogs.com/riches/p/11198488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!