浅谈对三层和实体层的认识

一、三层是指哪三层?每层的作用是什么?

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、数据访问层(DAL):负责直接操作数据库,针对数据的增添、删除、修改、查找等。

二、为什么要划分三层?

划分三层实现了高内聚低耦合,有利于系统的开发和维护。

三层之间的等级观念:

U层只能引用B层,B层只能引用D层。三层都可以引用Model。保证每一层都各司其职,也是单一职责的体现。

为什么要有等级?如果他们之间没有等级,可以互相调用各层中的数据,这样那些窗体显示还有逻辑判断以及访问数据库就会放在一起,和我们第一次做机房一样了,那么和不分层没有区别了,违背了单一职责原则,可维护性,可升级性都很差。 

三、三层之间的关系?

其实画完这个三层关系的图,我想到了设计模式中的命令模式,尤其是举了吃饭这个例子,和这个关系基本一样,不知道能不能用命令模式来实现三层架构,大家自行脑补。

四、如何搭建三层?

1.搭建表示层(windows窗体)

2.搭建业务逻辑层

3.搭建数据访问层

4,增加引用关系。

下面这个图是描述数据在三层中是怎么走的,觉得很不错,分享给大家。

 

五.Model--实体层

Model是什么?贯穿于上面三层,他的作用就是在三层之间传递数据,这是面向对象的编程模式。

为什么会用到实体层? 我的理解是这样的:之前提到了三层之间的等级观念,只能是从上往下引用,上层知道下层,下层却不知道上层。这样U,B,D三层只能单方向引用,有的时候对于数据传输会比较麻烦。实体层的作用就是贯穿于三层,在三层之间传递数据。当然这只是一方面,还有一个原因是便于用户返回所需要定义的数据类型。实体层中存放了很多实体类,三层中每层返回的类型都在实体类中定义好了,这样可以实现三层之间返回类型的互通。

1.举个例子来看看Model在参数传递时带来的好处:

在各层间传递参数时,可以这样:

 1.  AddUser(userId,userName,userPassword,…,)

    也可以这样:

  2. AddUser(userInfo)

当然是第二种比较简单了,这就相当于我们把UserInfo这个Model对象囊括userId,userName,userPassword这三个参数,当引用Model层的UserInfo就可以直接添加用户了,就不用一项一项的调用各种参数了,这样会很大可能的提高开发效率。

2.再举个例子看看什么时候用到Model:

如果说B层是U层和D层之间的邮递员,传递的实体就是信,信的组成是信封和具体信息。可以说信封封装了具体信息。

第一种情况:如果从U层传来的信息需要D层的处理的话,B层只是一个邮递员,不能拆信看内容,直接将用信封封装好的信息传递给D层,然后D层处理完信封中的信息再传给B层,然后B层再返回给U层。

第二种情况:U层传来的信息不需要D层处理,B层可以处理,这个时候B层就不是邮递员了,他不必送信,因为他收到的是没有封装的信息,B层可以直接处理这些信息。

 

总结:

当需要D层处理U层数据的时候我们用到了信封来封装信息,这个封装的信就是一个实体,这个实体是放在实体层的,也就是Model层,如果不需要D层来处理,B层可以直接处理的,就没有信封做封装,也就不需要实体层。当然一个比较简单的系统可能用不到实体层,所以实体层不是必要存在的。这个过程中U层是发出信件的人,B层是传递信件的人,D层是处理信件的人,处理完之后这个信件还是要通过B层传给U层。这三层中的每一层都知道信件也就是实体层的存在,也就是三层都可以引用Model,但是Model不能引用其他三层。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值