当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 工厂设计(Factory)----设计模式

工厂设计(Factory)----设计模式

2020年07月18日  | 移动技术网IT编程  | 我要评论

设计模式----工厂设计模式(Factory)

什么是工厂设计模式?

工厂设计模式是我们编程开发中最常用的一种设计模式,是属于创建型的设计模式。

举个例子,假如现在我们要买一辆车,我们不必去管这辆轿车是怎么做出来的,以及这种轿车类型的具体实现,只需要通过我们的需求从一个轿车工厂中拿到该轿车即可

这就是工厂模式的具体作用。

实现功能详解

大家可以思考一下,首先,汽车工厂肯定是生产多种多样的汽车(若只生产一种,无需工厂类,直接实例化即可)的,那么怎样才能通过一个汽车工厂生产各种各样的汽车呢?

Java的多态性正好可以解决这个问题,我们可以通过定义一个汽车的抽象类或接口,使其具有汽车共有特性,然后定义多个子类汽车类,代表每个汽车的单独配置或特性,通过对象的向上传递,实例化汽车类对象,然后再将对象返回即可。

如图:

在这里插入图片描述

这是根据此思想画的基本流程,哈哈,画的不太好,小伙伴们能够理解就成。

具体代码实现

汽车的接口和具体的汽车类

所有汽车类的父类Car接口

package com.design_patterns.factory.instance;

public interface Car {
    void produce();
}

救护车类

package com.design_patterns.factory.instance;

public class AmbulanceCar implements Car {

    @Override
    public void produce() {
        System.out.println("救护车成功生产~");
        System.out.println("价格为---->88889元\n应用范围---->医疗救治");
    }
}

劳斯莱斯车类

package com.design_patterns.factory.instance;

public class RollsRoyceCar implements Car {
    @Override
    public void produce() {
        System.out.println("劳斯莱斯车成功生产~");
        System.out.println("价格为---->888000元\n应用范围---->贵族出行");
    }
}

时风三轮车类

package com.design_patterns.factory.instance;

public class ShifengTricycleCar implements Car{

    @Override
    public void produce() {
        System.out.println("时风三轮车成功生产~");
        System.out.println("价格为---->20000元\n应用范围---->农业运输");
    }
}

坦克装甲车类

package com.design_patterns.factory.instance;

public class TankCar implements Car {
    @Override
    public void produce() {
        System.out.println("装甲坦克车成功生产~");
        System.out.println("价格为---->999999元\n应用范围---->国防军事");
    }
}
汽车工厂
package com.design_patterns.factory.instance;

/**
 * 定义汽车的工厂类
 */
public class CarFactory {

    private Car car;                //声明Car接口对象car

    /**
     * 生产汽车的方法,根据传入的参数不同,选择生产不同的汽车
     * @param carType
     * @return
     */
    public Car createCar(String carType){
        switch (carType){
            case "ambulance":
                car = new AmbulanceCar();           //生产救护车
                break;
            case "rollsRoyce":
                car = new RollsRoyceCar();          //生产劳斯莱斯
                break;
            case "shifengTricycle":
                car = new ShifengTricycleCar();         //生产时风三轮车
                break;
            case "tank":
                car = new TankCar();            //生产坦克车
                break;
            default:
                car = null;                 //输入错误,null
                break;
        }
        return car;             //返回生产的车型
    }
}
汽车商店(测试类)
package com.design_patterns.factory.instance;

import java.util.Scanner;

public class CarStore {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);                    //定义并实例化标准输入流对象
        String carType = null;                      //定义字符串,用于用户输入
        Car car = null;                                         //声明Car接口对象car
        CarFactory carFactory = new CarFactory();               //实例化汽车工厂类
        do{
            System.out.println("\n请输入您所需订购的车型:");
            carType = sc.nextLine();                            //输出车型
            car = carFactory.createCar(carType);                //调用工厂对象的createCar()进行汽车生产并返回
            if(car != null){                            //若生产成功
                car.produce();                          //打印生产成功信息
            } else {
                System.out.println("~~暂无此种汽车生产,生产失败~~");            //否则打印生产失败信息
                break;              //跳出循环
            }
        }while (true);
    }
}
运行结果
请输入您所需订购的车型:
ambulance
救护车成功生产~
价格为---->88889元
应用范围---->医疗救治

请输入您所需订购的车型:
rollsRoyce
劳斯莱斯车成功生产~
价格为---->888000元
应用范围---->贵族出行

请输入您所需订购的车型:
tank
装甲坦克车成功生产~
价格为---->999999元
应用范围---->国防军事

请输入您所需订购的车型:
shifengTricycle
时风三轮车成功生产~
价格为---->20000元
应用范围---->农业运输

请输入您所需订购的车型:
plane
~~暂无此种汽车生产,生产失败~~

总结

至此,就是设计模式的工厂模式的简单讲解与应用,如果这篇文章对你有帮助,麻烦请随手点个赞,给点鼓励继续创作,哈哈,加油小伙伴!

本文地址:https://blog.csdn.net/weixin_43479947/article/details/107416206

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网