您的位置:首页 > 其它

机房重构之实体、datatable、泛型集合 哪个比较“刚”

2015-05-10 21:30 246 查看
在敲机房的时候,我们有的同学使用的datatable做返回值,有的使用泛型集合做返回值。那么问题来了,他们有什么区别吗,实体跟他们有什么关系。

首先看看用datatable的。datatable是数据集的填充用起来很方便,不过他是弱类型,没有办法看出数据表中字段的名称和类型,使用者必须全了解数据库的数据结构。比如UserInfo中第二个字段是UserId,我们使用时就应该这样使用datatable.rows(0).item(1)。这是十分不方便的,在机房重构中数据库是我们自己设计的,有时候还要不断的打开数据库看看我们需要的字段在第几个位置,要是数据库是不可以给我们看的我们就无法完成编程了。而且我们使用的是三层结构,U,B,D依赖的全是实体层,但是使用了datatable后,我们可以看到在从D层往回返的时候默默的就全使用了datatable,而把实体丢掉了一边。可以说datatable破坏了三层结构。(三层优点:

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间)三层是是引用实体的。

接下来我们看看用实体的,我们知道在传递参数时可以用变量传递,也可以用实体传递。当需要的参数比较少的时候,我们可以用变量传递参数,但是当需要传递大量的参数时,我们就需要用实体类的对象进行传递,如需要插入一条上机记录时,需要给D层传递UserID,OnTime,StuID,CardID,等等参数,那么我们有一个上机的实体,这样只需对实体中用到的对象进行赋值,然后传递实体就可以了。当D层返回一条记录时,当然我们可以用一个实体来接收他的值,但是如果返回好几条记录呢?泛型集合就该闪亮登场了。

泛型集合是将实体对象集封装成一个泛型集合,不必了解数据库结构,符合面向对象思想,实体类的属性是强类型,每个字段的类型都是已知的。可以看出他可以弥补一些datatable的缺点。使用泛型其实我们还是使用的实体,没有破坏三层结构。但是如果对泛型集合中的每个实体一个一个赋值的话,也是比较复杂的,那么我们就将datatable转化成泛型,这样就结合了他们各自的优点,更好的为我们的三层服务。

总结,实体,datatable,泛型都很好,都是智慧的结晶,都有其存在的价值,我们要根据我们的结构和需要选择最适合的来为我们的程序服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: