




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生作文我的梦想征文
- 云南省怒江傈僳族自治州福贡县联考2024-2025学年高一上学期1月期末生物学试题(含答案)
- 国际贸易实务中的结算方式知识考点
- 个人自助图书馆借阅服务合同
- 现代服务业服务质量评价标准知识考点
- 互联网产品策划题
- 办公空间能源消耗表格:能耗统计、节能减排
- 金融投资行业市场波动风险免责声明
- 医学知识视频培训课件
- 工作计划完成情况统计表格
- 智能化模塑研发与制造中心项目生产经营方案
- 2023版押品考试题库必考点含答案
- 电力建设工程施工技术管理导则
- E4A使用手册资料
- 国家自然科学基金预算模板
- 高一物理必修一综合测试题含答案
- 内科学系统性红斑狼疮题库
- 万达广场室内步行街装设计任务书
- 人音版五年级下册音乐《巴塘连北京》课件
- GB/T 775.1-2006绝缘子试验方法第1部分:一般试验方法
- GB/T 39965-2021节能量前评估计算方法
评论
0/150
提交评论