下面呢我们再来看一个酒店管理系统或者饭店管理系统,这样应用系统
那这样一个系统呢很显然它就有更多的表,比如说它的库存呢,它的用户啊,它的这些菜- 单呢等等
它就有更多的表,表与表之间的关系也更复杂,业务逻辑呢
也复杂,这个时候呢就不仅仅像我们刚才写几个函数就能够解决了
所以呢我们就要把这个业务,复杂的这样一个系统呢进行分层
这就是经常所谓的三层架构或者说 n 层架构、 多层架构。
那么这三层里面呢 基本上是这三层,一个呢是用户界面层
基本上就是我们说的窗体,窗体呀,控件呢 就是用户界面层,就是我们叫 UI 层。
这个 UI 呢 它访问数据库呢,中间有一个业务逻辑
我们就不简单地写一个函数就行了,它有更复杂的逻辑呢 我们就可以把它放到 BLL 层,也就是业务逻辑层。
还有一个再往下呢 这个业务逻辑呢,它跟数据库,访问数据库,这个叫
DAL 层 数据访问层呢,目的呢是跟数据库直接打交道。
因为一分层呢又带来另一个问题,就是说 这几层之间我要传递参数,那就不用简单的一个
变量了,比如说你要传递一个人的信息,这个人呢有姓名呀,有年龄啊 啊等等,那么这些信息呢我们就用一个所谓的模型
那把它表示起来,那这个模型就在用户界面、 业务逻辑
和数据层之间传递信息,假设我们查询出人的那个信息了 这个人的信息呢我们要从数据库数据信息呢包装
以后呢成一个人的,这个我们称为模型或者叫实体 然后传到业务逻辑层去计算呢,统计呀等等。
这个业务逻辑层呢我们可能还需要显示到界面上
啊这些数据呢最终的结果显示在界面上,所以这都需要一个实体,或者叫模型 把它串起来。
那么这个实体呢我们刚才已经看出来,一个实体实际上是跟数据库的那个表关联的 那么这种技术呢就称为 OR
技术,O 呢 Object,就是我们刚刚的实体,你或者叫数据模型
这个对象,那么关系呢就是关系型数据库也就是表,数据库的 关系数据库里面的表,它叫关系,实际上是这两个映射。
所以实际上我们 可以把一个,一行记录呢,比如说关于人的姓名、 年龄,那就映射到一个
person 这样一个对象里头去,一张表,多个人呢实际上就是映射到一个
数组,就是或者一个人的数组,或者是一个 list
列表 对象-关系映射呢是我们在复杂系统里面解决这个模型的 一个基本的方法。
那么这个映射呢还,有的时候呢还需要用一些工具 自动地根据这个数据表啊来形成这个
Object 这个class 自动生成,我们就不用手工去写了,那么多属性,那么多字段名太麻烦了
所以可以用一些工具,它自动地根据数据库的表结构来生成这个
class,当然有很多这样的工具,那我们下面呢就看一个例子
这个例子呢,它的代码也比较复杂,我们只需把刚才这两个
关键的,一个是这三层架构以及呢模型给大家看一下
具体代码呢大家还可以仔细地去看这个附件 为了有直观的印象呢,我们先看这个饭店管理系统的一个运行效果
这个示例呢是摘录那个,网上有一个叫李天平呢 他写了这样的工具,做了这个示例,我们就把它引用过来。
你看 信息管理系统啊,我们也称为 MIS,就是 Management Information System 信息管理系统。
那我们现在在公司里面或者这些业务系统里面,经常看到这样的系统
它后台是一个数据库,前台呢有这样的界面,它都有选择或者是这些字段
然后填,填完以后呢我们就可以查询,查询这个结构呢
就显示到这个格网里头,然后我们可以进一步 地选择等等。
并且呢这个表呢也比较多 有表也比较多。
所以这样一个系统,我们在实现的时候呢就是分层
那么分层呢,几个项目,在业务系统里面呢,它这些功能比较复杂
那我们就把它分成几层,每一层呢你可以建一个文件夹,当然如果
再复杂了呢我们可以把每一层呢都作为一个项目,我们看到这里有好几个项目
就是有界面项目,然后有业务层数据访问层和模型
我给大家放大一点看,这里几个项目,分别来完成这几件事情。
在这个界面层呢 主要是一些窗体了,那么业务逻辑层呢主要是一些统计计算呀等等,还有呢跟那个数据库
打交道,比如说我们看一个。
这个关于收入的一个业务逻辑 但这个逻辑呢,它里面写了一些方法,比如说判断是不是存在呀
然后添加一条收入信息呀,这是业务逻辑,更多的可能还要 做一些计算呢,统计呀,判断呢,然后算奖金呢等等,这个算业务逻辑
但在这里这个业务逻辑呢还是比较简单的,它只是增加一条数据 那么增加一条数据呢调用的是
dal,数据访问层的这个增加 所以它又到了数据访问层的这个增加。
这个 数据访问层的增加呢它最终是形成了一个 Sql 语句 然后再执行我们一个实用工具类
Execute iii Query 或者 ExecuteSql 所以它是这样一个过程。
那么在这里面传递的信息呢 就在增加的过程传递的信息呢就是这个模型类
这个模型类呢实际上它就有很多字段,比如说收入的总计,然后呢
各种钱数等等,它是放到这个模型里头。
我们可以看看这个模型呢,又到另一个项目里头
这个模型里头定义的就是这些各种字段,这个字段写起来比较罗嗦了,所以有些开发了一些工具
能够自动根据数据表形成这样,这么多字段的这样一个 class,这个呢就成为
ORMapping 所以,通过这么一个分层架构,再加上 ORMapping
实现我们的比较复杂的系统呢,这样就比较合理一些