Java设计模式之工厂模式
作者:马洪彪 发布时间:2023-12-18 01:40:50
标签:Java,设计模式,工厂模式
一、场景描述
仪器数据文件的格式包含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


猜你喜欢
- 问题描述:我的PopupWindow位于屏幕底部,它上面有一个EditText输入框,而当我点击这个EditText的时候,随着输入法的弹出
- 将脚本挂在要判断声音是否播放完毕的物体上using System.Collections;using UnityEngine;using U
- 使用场景当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行
- ArrayList中存放引用数据类型ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到
- 接着上篇java验证码制作(上篇)给大家介绍有关java验证码的相关知识!方法三:用开源组件Jcaptcha实现,与Spring组合使用可产
- 将Android项目导出为Library1.修改build.gradle中的Module:app文件最终如下:2. 进入到项目文件夹目录,保
- 背景最近再做一个需求,就是对站点的一些事件进行埋点,说白了就是记录用户的访问行为。那么这些数据怎么保存呢,人家点一下保存一下?显然不合适,肯
- 本文实例讲述了Winform下实现图片切换特效的方法,是应用程序开发中非常实用的一个功能。分享给大家供大家参考之用。具体方法如下:本实例源自
- 当一个产品或者项目由大量独立模块组成时,想要从 Git 挨个下载下来导入 IDE 查看并不容易,此时可以结合使用 Git 和 Maven 的
- 很多时候我们用HTML布局会更方便直接,记录一下。我现在主要是直接调用服务器的网页(实际上是jsp的,只是返回的是html),所以需要联网,
- 连接操作redisSpring Boot中操作redis还是需要使用相关的启动器<dependency><groupId&
- 简介MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改
- layout布局<RelativeLayout xmlns:android="http://schemas.android.
- Spring开启注解AOP的支持放置的位置放在springmvc的aop,需要在springmvc的配置文件中写开启aop,而不是sprin
- 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题:class Grandpa{static{System.o
- 准备工具:IDEAjdk1.8Navicat for MySQLPostman一、新建Project选择依赖:mybatis Web Mys
- 一,FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指
- 前言在实际开发当中,对于某些关键业务,我们通常需要记录该操作的内容,一个操作调一次记录方法,每次还得去收集参数等等,会造成大量代码重复。 我
- 提到类型转换,首先要明确C#中的数据类型,主要分为值类型和引用类型:1.常用的值类型有:(struct)整型家族:int,byte,char
- 花了很长时间的实践,终于搞清楚了。类或者链表等,在指针赋值的时候,会使用新的指针。比如:Foo a = c;Foo b = new Foo(