【机房重构】——实体类(Model)的奇葩说

【引言】

  在刚刚开始三层架构的时候,遇到三层分别是界面层(UI),业务逻辑层(BLL),数据库访问层(DAL),还有一个就是实体层(Model),在总结三层的时候不知道实体(Model)是干什么用的,在画图的时候直接把它当做一层,与U层,B层,D层同等重要,后来经过学习,才发现其实并不是这样,寻求了一下度娘的帮助,查获了各种各样的说法,那么孰真孰假,哪个最终经得起考验,别急,且听我细细道来。

【奇葩说】

           

1.传递参数

路人甲传递参数——model是为了让传递数据更加方便,简单,系统易于维护,尤其是对于大量的数据来说用基本数据类型变量做参数显示不合适. 拿实体对象做参数则方便的多。

                例子:机房收费系统中的增加学生信息,,在各层之间参数传递时可以不用实体类,而是传递基本数据类型变量:insert(studentId,studentName,studentClass…),也可以应用实体类,传递一个学生实体insert(studentInfo);显然第二种方法比第一种要简单许多;

                不用实体类的三层:

                

   

                 用了实体的三层:


由此可以看出 ,用实体类之后,代码明显变得简洁,面向对象封装思想。最重要的是,如果将来有所改动,只需要改动实体类,方法间调用接口,完全不需要变动,大大减少了程序修改量,迎合了面向对象中接口不变的思想。

 2.数据表的映射

路人乙:数据表的映射——model层里面的一个类对应数据库里面的一张表, 把表里的字段封装在一个实体对象里,类里面的每一个属性对应表里面的一个字段,每个属性都有自己的 GET 和 SET 方法, 项目中的数据存取都要依靠GET和SET方法来实现,使用实体类属合面向对象编程的思想,把一个表封装成一个类。

举例:三层中的model层代码——

<span style="font-family:KaiTi_GB2312;font-size:18px;">namespace Login.Model
{
  public class UserInfo
    {
        public int ID { get; set; }

        public string UserName { get; set; }

        public string Password { get; set; }

        public string Email { get; set; }
    }
}</span>

比较DataTable和实体类

DataTable:是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。


 3.复杂数据的存储

路人丙:复杂数据的存储——Model是什么?它什么也不是!它在三层架构中是可有可无的。它其实就是面向对象编程中最基本的东西:类。一个桌子是一个类,一条新闻也是一个类,int、string、double等也是类,它仅仅是一个类而已。model在三层架构中的位置和int,string等变量的地位就一样了,没有其它的目的,仅用于数据的存储而已,只不过它存储的是复杂的数据。

【总结】

看了这么多,不知道大家对实体类有没有新的认识,一种八仙过海,各显神通的感觉,实体类从不同的角度看,就会有不同的理解。我的理解是实体类就是一个桥梁,在各层之间传递数据;现在只是一个小小的开始,理解起来可能有许多不完善的地方,随着机房重构的进一步深入,我们的认识会越来越深入,just do it !


评论 106
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大白啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值