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

   日期:2020-07-18     浏览:91    评论:0    
核心提示:设计模式----工厂设计模式(Factory)文章目录设计模式----工厂设计模式(Factory)什么是工厂设计模式?实现功能详解具体代码实现汽车的接口和具体的汽车类汽车工厂汽车商店(测试类)运行结果总结什么是工厂设计模式?工厂设计模式是我们编程开发中最常用的一种设计模式,是属于创建型的设计模式。举个例子,假如现在我们要买一辆车,我们不必去管这辆轿车是怎么做出来的,以及这种轿车类型的具体实现,只需要通过我们的需求从一个轿车工厂中拿到该轿车即可。这就是工厂模式的具体作用。实现功能详解大家可以

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

文章目录

    • 设计模式----工厂设计模式(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

    
    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
~~暂无此种汽车生产,生产失败~~

总结

如果想要在汽车工厂中添加新的汽车种类,只需再创建一个实现Car接口的汽车子类,在汽车工厂中的switch语句中添加一句

case "新汽车的名字":
			car = new 新的汽车子类();
			break;

即可。

至此,就是设计模式的工厂模式的简单讲解与应用,如果觉得这篇文章写得不错的话,麻烦请随手点个赞,给点鼓励继续创作,嘿嘿,感谢!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服