版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、接口与抽象的应用实例,常用的批量导入的开发,打开文件,读取所有数据,导入所有数据,打开文件,读取一条记录,导入一条数据,关闭文件,关闭文件,导完,未导完,为批量引入接口与抽象,通过常用的批量导入方式,可以很好的完成数据的导入,为什么还要引入 接口与抽象呢?以下情况是经常发生的: 1、数据源的类型和格式改变时 2、目标源的类型和格式改变时 当然很多人会用COPY+PASTE,然后在恰当的地方进行恰当的修改,来实 现恰当的功能。但这样做的工作量是相当大的。比如数据源不是XLS,而是来自 另一个数据库,或是SOCKET流。而且可复用性基本为零,维护量在后期也会相 当的大。接口与抽象这时就体现了它的优
2、势。,批量导入设计的一般框架,接口与抽象是一个公用模块不可缺少的设计。对常用的批量导入业务进行 抽象,可以发现,类似于Pipe处理,即数据读取,数据导入。再进一步的抽象 业务,读取一条记录,导入一条记录,可以使子类的开发更加容易,代码更空 易复用和维护。,批量导入数据读取,IReadData,AReadData,TextReadData,XlsReadData,BaseReadData,批量导入数据导入,IWriteData,AWriteData,TextWriteData,XlsWriteData,BaseWriteData,批量导入接口适配器,这里借用适配器这一说法(适配器是用空方法实现接
3、口的类)来处理不同 接口间数据格式的匹配。比如读取TEXT文件的map (new Integer(n)=value)和 导入XLS文件map (String=value)之间的转换。当各种数据源读取到的Map和写 入所要求的数据结构一致时,就可以毫无顾忌的相互导入了。,接口适配器的设计,在批量导入的实例中,适配器只需要对不同格式数据源进行匹配,使之出 来的结果数据结构相同。适配器只需要用抽象类就行了,可以不使用接口。这 样,几乎所有类型的数据导入就可以实现了。下面将直接用简洁的代码实现。,文本文件,XLS文件,数据库,SOCKET,数据源读取设计,Public interface IReadD
4、ata public Map readData(); ,Map为接口的返回对象,map=null读取结束。 用Map作为数据结构可以解决数据列的顺序问题。比如XLS文件title=Value, TEXT文件new Integer(n)=value。这样可以通过中间类实现XLS到TEXT格式 的转换,从而实现批量导入。,数据源读取设计TEXT文件,Public class TextReadData implements IReadData throws Exception private InputStream inputStream; public TextReadData(File file
5、) throws Exception inputStream=new FileInputStream(file); public Map readData() InputStreamReader rRead=new InputStreamReader(inputStream); BufferedReader bRead=new BufferedReader(rRead); String msg=bRead.readLine(); if(msg=null)return null; Map map=new HashMap(); String msgArray=msg.split(“,”); for
6、(int I=0;ImsgArray.length;I+) map.put(new Integer(I),msgArrayI); return map; ,数据源导入设计,Public interface IWriteData public void writeData(Map map); ,1、Map为需要导入的数据,数据源导入设计TEXT文件,Public class TextWriteData implements IWriteData throws Exception private outputStream outputStream; public TextWriteData(Fil
7、e file) throws Exception outputStream=new FileOutputStream(file); public void writeData(Map map) Object msg=null; int locate=0; StringBuffer sb=new StringBuffer(); while(msg=map.get(new Integer(locate+)!=null) if(locate0)sb.append(“,”); sb.append(msg); sb.append(“rn”); outputStream.write(sb.toString
8、().getBytes(); ,适配器设计默认类,Public class DefaultAdapter implements IDataAdatper public Map changeDataFormat(Map map) return map; ,这个类没有只是直接返回,可以用于文件复制或是读取后 结构相同的数据源之间导入。,批量导入最后设计,Public class DataImport public void importData(IReadData iReadData ,IWriteData iWriteData ,IDataAdapter) throws new Exception Map map=null; while(map=iReadData.readData()!=null) map=IDataAdapter(map); iWriteData.writeData(map); ,结束语,以上所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西中医大中医内科学教案51痹证
- 2025~2026学年广西河池市上学期高三期末学业水平质量检测试卷
- 2025年康复医学中级技术资格考试题库及答案
- 煤矿井上维修钳工年度工作总结报告
- 防火卷帘故障应急预案演练脚本
- 2026年度安全大检查食品安全排查情况报告
- 2025渭南澄城县省内重点企业线上招聘(197人)笔试参考题库附带答案详解
- 2025浙江温州市平阳县县属国有企业招聘总及人员笔试历年参考题库附带答案详解
- 2025浙江宁波市象山县旅游集团有限公司第一期招聘总及对象笔试历年参考题库附带答案详解
- 2025浙江宁波前开能源科技有限公司招聘8人笔试历年参考题库附带答案详解
- 2026年演出经纪人之《演出经纪实务》基础试题库及答案详解(历年真题)
- 2026版医疗保障基金使用监督管理条例实施细则解读课件
- 海南海南省纪委监委所属事业单位2025年招聘8名事业编制人员(第1号)笔试历年参考题库附带答案详解(5卷)
- 中国原子能工业有限公司招聘笔试题库2026
- 街道志愿者服务工作制度
- 广东江西稳派智慧上进教育联考2026届高三年级3月二轮复习阶段检测语文+答案
- 2026山东出版集团有限公司山东出版传媒股份有限公司招聘193人备考题库及完整答案详解【历年真题】
- 人教版2024-2025年九年级数学2年全国中考真题汇编 5.2 矩形、菱形与正方形 第3课时 正方形
- 2025年职业技能鉴定考试(科技咨询师)测试题及答案
- 【新教材】人美版(2024)小学4年级劳动下册项目二+任务三+活体蔬菜豌豆苗(教学课件)
- 《零碳办公建筑评价标准》
评论
0/150
提交评论