通用数据访问类的使用

文章目录

    • 1 通用数据访问类的使用
      • 1.1 实现代码复用
      • 1.2 封装ExecuteScalar()方法
      • 1.3 封装ExecuteNonQuery()方法
      • 1.4 封装ExecuteReader()方法
    • 2 基于对象明确原则优化程序
      • 2.1 当前程序存在的问题
      • 2.2 StudentService类中的方法
      • 2.3 对象职责明确原则总结
    • 3 实体类的应用
      • 3.1 分析上面2.2中所实现的程序
      • 3.2 实体类的引入
      • 3.3 实体类总结
    • 4 数据查询与对象封装
      • 4.1 使用简单实体封装单一对象
      • 4.2 使用List集合封装多个同类型的对象
    • 5 组合扩展实体的应用
    • 5 简单扩展实体的应用
    • 6 面向对象查询总结

1 通用数据访问类的使用

1.1 实现代码复用

首先对比之前的代码:
通用数据访问类的使用_第1张图片
我们可以看到有大量重复的代码。为了解决大量重复代码的问题,我们需要进行代码复用。

代码复用的基本形式:编写一个通用的方法。

代码复用技术应用要求:

  • 原则:提取不变的,封装变化的。
  • 技巧:不变的作为方法体,变化的作为方法参数。

通用数据访问类的使用_第2张图片

1.2 封装ExecuteScalar()方法

通用数据访问类的使用_第3张图片

1.3 封装ExecuteNonQuery()方法

通用数据访问类的使用_第4张图片

1.4 封装ExecuteReader()方法

通用数据访问类的使用_第5张图片


2 基于对象明确原则优化程序

2.1 当前程序存在的问题

通用数据访问类的使用_第6张图片
我们可以看到当前的数据展示代码和数据库访问代码混编在一起。

前后台代码混编的缺点:

  • 程序编写人员必须非常熟悉后台数据的设计。
  • 业务逻辑复杂时很难查找错误且不利于后期维护。
  • 不符合面向对象的设计思想:对象职责明确原则。

问题解决:

  • 将数据展示代码和数据访问代码分离。
  • 根据当前需要访问的后台实体,创建一个对象的数据访问类。
  • 将对该实体操作的方法封装到对象的数据访问类中。
    通用数据访问类的使用_第7张图片

2.2 StudentService类中的方法

通用数据访问类的使用_第8张图片
将前台操作内容全部分离,只有数据访问内容。而对于前台来说,只保留数据展示盒业务逻辑。

通用数据访问类的使用_第9张图片

2.3 对象职责明确原则总结

原则:

  • 分离“界面代码”和“数据访问代码”。

好处:

  • 不管是什么类型的应用程序(Winform、ASP),当界面发生变化时,数据访问部分一般不需要任何变化。
  • 同时,前后设计人员可以很好的分离。

注意:

  • 当我们写程序的时候,界面中不能出现任何的SQL语句,数据访问后台代码中也不应该有其他业务逻辑代码。

3 实体类的应用

3.1 分析上面2.2中所实现的程序

通用数据访问类的使用_第10张图片

3.2 实体类的引入

概念与形式:

  • 只包含属性和构造方法的类称为实体类。
  • 实体类属性和数据库实体属性一一对应(字段名称和数据类型一致)。

通用数据访问类的使用_第11张图片
用实体类替换多个方法参数:
通用数据访问类的使用_第12张图片
前台调用方法:
通用数据访问类的使用_第13张图片

3.3 实体类总结

深入理解实体类:

  • 实体类除了和数据表对应外,通常都有对应的数据访问类。
  • 实体类和对应的数据访问类,其实是一个对象的属性和方法的分离,这种分离是为了更好的体现系统的可维护性。
  • 实体类的使用使得程序设计人员可以完全脱离对数据库的依赖。
  • 同时界面开发人员和后台数据访问类的开发人员可以明确分工。

实体类的主要作用:

  • 封装数据:将用户的输入数据或后台查询数据,封装为实体对象,简化接口。
  • 传递数据:在用户界面和数据访问类之间传递信息。

实体类在面向对象设计中的地位:
通用数据访问类的使用_第14张图片


4 数据查询与对象封装

4.1 使用简单实体封装单一对象

通用数据访问类的使用_第15张图片
我们需要在数据访问类中封装查询结果:
通用数据访问类的使用_第16张图片
通用数据访问类的使用_第17张图片

使用对象封装和解析查询结果的好处:

  • 对象成为数据传递的载体,消除了前台和后台的紧密依赖。

封装和解析对象的意义:

  • 稳定了数据访问接口,明确了职责。
  • 前台开发人员和后台开发人员可以分离并实现同步开发。
    • 数据访问方法只关心如何封装对象,而不关心谁使用。
    • 界面数据展示部分只关心如何解析对象,而不关心如何查询并封装对象。
    • 前台后台各自职责完全分离,充分体现了面向对象开发的思想(高内聚、低耦合、职责明确)。

4.2 使用List集合封装多个同类型的对象

在数据访问类中封装多个对象
通用数据访问类的使用_第18张图片

在界面中解析多个对象
通用数据访问类的使用_第19张图片


5 组合扩展实体的应用

组合扩展实体要求:

  • 组合扩展实体是为满足用户查询而设计的实体类,一般由业务实体组合而成。

通用数据访问类的使用_第20张图片
使用扩展实体封装多个对象信息
通用数据访问类的使用_第21张图片
扩展实体的解析方法

通用数据访问类的使用_第22张图片


5 简单扩展实体的应用

通过继承定义扩展实体
通用数据访问类的使用_第23张图片

代码编写
通用数据访问类的使用_第24张图片
前台解析通用数据访问类的使用_第25张图片

通用数据访问类的使用_第26张图片


6 面向对象查询总结

通用数据访问类的使用_第27张图片

你可能感兴趣的:(C#)