工厂模式设计(Factory)----设计模式
程序员文章站
2022-03-10 17:21:02
设计模式----工厂设计模式(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
/**
* 生产汽车的方法,根据传入的参数不同,选择生产不同的汽车
* @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