如何用面向对象的思想来设计导数据这样的需求,望解答!!!!!!!
先说下我的需求:其实很简单,就是把用户数据导入数据库.用户数据保存在excel里,excel中的格式事先都约定好了,每天都有数据文件过来.
我以前是这样做的,读取excel文件,把读取的数据保存到的一个bean中.然后检查数据,看看是否符合业务逻辑,一种是数据本身的检查,比如数据中的日期与费用有一定的关系,但有时候客户在填excle表的时候会填错,我要把这种数据本身的错误检查出来.另一种检查涉及到数据库,比如客户有时候会把重复的excel文件发过来,我要检查下数据库,是否已经有相关数据.检查完了,没问题就把数据导入数据库,然后还要做一些数据库相关的操作,都是一些update操作.
我现在想用面向对象的思路来改写代码,因为我发现以前的写法基本还是停留在过程化的思想上,程序中所有的方法全是static的...囧...
根据我的需求,如果想用面向对象的思想来设计,应该怎么做,我想了半天老是在过程化的思想里绕圈圈,比如想到设计个读取类,验证类,导入类什么的,好象还是很"过程".
------解决方案--------------------
------解决方案--------------------可以参考struts 的 validate
------解决方案--------------------可以设计一个通用类,用来读取excel的各种部分,比如title或者数据去
然后把单元格的属性映射成一个javaBean的属性中去
不过读取excel本身本着怎么方便怎么来就行了
------解决方案--------------------总结下大家的观点,
把这些数据定义类型,使用ORM技术,映射到类,然后操作,可以在日常计划中配置下,就只要每天发不容内容的同名excel文件就可以了
------解决方案--------------------
谈谈我的看法吧
“良好”的设计是针对“变化”而言的。如果你的需求恒久不变,那么面向过程也没什么,只要你编程能力强,能把程序一气呵成而且没有错误。
如果有“变化”,那么你就要考虑代码的可复用、可维护性
这么说很抽象,我说具体点:
1、如果你有多种格式的EXCEL,或者说现在只有一种而以后可能加几种,那么你就要考虑代码的可复用性了。
总不能来一种EXCEL格式就要COPY一次代码吧,COPY多了,一旦你发现早先代码有一个BUG,改起来就麻烦了。
2、数据合法性检查。这很明显是个容易变化的地方,你现在定义的规则只不过是你根据现在发现的异常情况而定的,
可是你很难保证现有规则已经完善了。因此,要考虑规则的可维护性。
。。。
可维护性的设计原则:
1、如果添加能解决问题,就不要修改
2、如果一定要修改,则把可能修改的内容集中到能迅速定位的地方
3、尽量让修改的地方最少
根据你描述的,我的设计可能是这样的:(假定为控制台方式)
1、控制类,main放这个里面,调度程序也放里面
2、Excel处理器,构造方法的参数就是文件名;提供方法能把文件处理成Bean或者Bean List,这里要考虑通用性,比如
方法带3个参数-bean类型、属性数组、属性类型数组
3、验证器接口
4、验证器实现类,分成多个
5、数据库操作接口及实现类