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

【引言】

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

【奇葩说】

           【机房重构】——实体类(Model)的奇葩说_第1张图片

1.传递参数

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

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

                不用实体类的三层:

                【机房重构】——实体类(Model)的奇葩说_第2张图片

   【机房重构】——实体类(Model)的奇葩说_第3张图片

                 用了实体的三层:

【机房重构】——实体类(Model)的奇葩说_第4张图片【机房重构】——实体类(Model)的奇葩说_第5张图片

【机房重构】——实体类(Model)的奇葩说_第6张图片【机房重构】——实体类(Model)的奇葩说_第7张图片

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

 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 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。

【机房重构】——实体类(Model)的奇葩说_第8张图片

 3.复杂数据的存储

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

【总结】

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


你可能感兴趣的:(机房重构,实体类Model,数据表的映射)