Java设计模式之工厂模式
作者:马洪彪 时间:2023-12-18 01:40:50
一、场景描述
仪器数据文件的格式包含Pdf、Word、Excel等多种,不同种格式的文件其数据的采集方式不同,因此定义仪器数据采集接口,并定义PDF、Excel等不同的数据采集类实现该接口。
通过工厂类,调用不同的方法,获取不同的仪器数据采集类,调用接口方法即可。
如不使用工厂模式,则需要new不同的采集类对象,使用工厂模式则隐藏了new的创建方式。
如下图所示:
二、示例代码
仪器数据采集接口:
package lims.designpatterndemo.factorydemo;
public interface EquipmentDataCapture {
public String capture(String filePath);
}
PDF文件数据采集类:
package lims.designpatterndemo.factorydemo;
public class PdfFileCapture implements EquipmentDataCapture{
@Override
public String capture(String filePath) {
return "PDF file content";
}
}
Excel文件数据采集类:
package lims.designpatterndemo.factorydemo;
public class ExcelFileCapture implements EquipmentDataCapture{
@Override
public String capture(String filePath) {
return "Excel File Content";
}
}
工厂类:
package lims.designpatterndemo.factorydemo;
public class EquipmentDataCaptureFactory {
public static EquipmentDataCapture getPdfFileCapture(){
return new PdfFileCapture();
}
public static EquipmentDataCapture getExcelFileCapture(){
return new ExcelFileCapture();
}
}
调用示例:
package lims.designpatterndemo.factorydemo;
public class FactoryDemo {
public static void main(String[] args) {
EquipmentDataCapture edc = EquipmentDataCaptureFactory.getPdfFileCapture();
edc = EquipmentDataCaptureFactory.getExcelFileCapture();
String fileContent = edc.capture("");
System.out.println(fileContent);
}
}
来源:http://www.cnblogs.com/mahongbiao/p/8618970.html
标签:Java,设计模式,工厂模式
0
投稿
猜你喜欢
Android中的Launch Mode详情
2022-10-06 02:38:09
XListView实现下拉刷新和上拉加载原理解析
2022-02-16 06:47:52
Android实现屏幕录制功能
2022-10-29 15:26:36
浅谈一下Spring中的createBean
2023-06-08 22:01:26
Spring启动时实现初始化有哪些方式?
2023-09-20 18:25:57
android之listview悬浮topBar效果
2022-12-24 23:29:58
Mybatis如何传入多个参数的实现代码
2022-02-26 02:52:24
C#基础知识之new关键字介绍
2021-09-24 02:48:26
解决使用ProcessBuilder踩到的坑及注意事项
2023-11-24 01:37:55
Java 如何安全的发布对象
2022-08-09 05:38:52
java设计模式之工厂方法详解
2023-09-09 01:18:56
java中的Io(input与output)操作总结(四)
2021-10-11 03:14:19
Java实现微信发红包
2021-07-22 05:11:07
C#使用iCSharpcode进行文件压缩实现方法
2022-09-28 06:25:32
C#实现获取机器码的示例详解
2021-11-13 06:57:19
springboot mybatis里localdatetime序列化问题的解决
2023-06-25 06:58:18
Android popupWindow弹出窗体实现方法分析
2021-08-08 08:07:42
Android音视频开发Media FrameWork框架源码解析
2021-08-07 05:12:14
C# 9.0新特性——扩展方法GetEnumerator支持foreach循环
2021-08-27 22:38:09
JavaWeb简单文件上传流程的实战记录
2023-04-02 09:14:59