当我开始理解三层

前言


虽然有点不按套路出牌,虽然进度有点慢,虽然不理解的地方有点多,但还是坚持下来了,把 C# 和 VB 对比着看一下,其实相似的地方还是挺多的,就是多了一些内容,用三层去理解,传递参数,虽然理解好理解,但是实践起来还是不容易

这里写图片描述

快递员-实体层


最开始非常不理解实体层,想着一共就三层,怎么还多出来一个,虽然三层中并没有实体层这一说,但是这个东西是必不可少的,那就来说一说实体层是干嘛的,打个比方,大家学过数据库应该知道数据库中有一个三级模式两级映像,应该都知道这个映像的作用是为了当其中一个模式有所改变的时候为了不然其他的模式也变化很大而去改动映像,这样就避免了经常去改动模式了,而这个实体层也是一样

这是个正儿八经的栗子
这里写图片描述

我从淘宝上买了一件非常漂亮的我猜测我穿上一定会像个仙女一样的裙子,我刚买完,商家就发货了,第二天我查看物流的时候发现我的地址写错了,而且已经在派送中了,我就紧急的联系快递员小哥哥,告诉他我的地址在哪,然后他放到了学校门口的代收点处,我就顺利的拿到了快递


当我发现我的地址写错了的时候,如果我联系淘宝商家,那么淘宝商家需要去联系快递公司,快递公司需要联系派送中的小哥哥(这中间还可能有联系不到位的地方)
如果我联系代收点,那也是无用功,因为他不一定会拿到我的快递,还可能需要找到物流号等等信息,再去查找,而我直接联系了快递员小哥哥修改我的地址,这样就很方便也很快速的更改了我的地址,顺利的穿上了我的裙子和男盆友去约会!
这里写图片描述

具体的操作来说,实体层就是数据库表的映射,另外一个角度来讲,就比如一个人的姓名,性别,爱好等信息,全都写在一起,然后放起来等别人来调用,这样就是用的时候不用再去强调一下这个人的性别了,这样就可以实例化之后写个实体名然后点一下,就有其他的信息了,这样只要引用了实体层就很容易的调用实体的信息了,也体现了面向对象的特点

public class Users
    {
        private string _ID;
        public string ID { get => _ID; set => _ID = value; }
    }

这里写图片描述
这里写图片描述

UI层(User Interface layer)


这个 UI 层还是很好理解的,就是外观嘛,就是和用户最直观的一个接触的地方,这个在 VB 中就是很明显的体现了逻辑就不再说了,下面说一下它的操作
作为一个明确用来外观的层,就要有一点正经的样子,所以说 UI 层的代码尽量简洁,逻辑上 UI 层也就是把数值接收一下,发送给 B 层,然后等 B 层的消息再展示出来,就 OK 了!

BLL层(Business Logic Layer)

B 层就是业务逻辑层
有一点点像把数据组合整理然后传个UI层的样子,不过B层的作用好大,承上启下,可谓是顶梁柱一样的存在

public string LoginResult(Entity.Users user)
        {
            //实例化D层
            DAL.Login Login = new DAL.Login();
            //定义变量
            bool IsExist = Login.IsExitUser(user);
            //IsExist是D层的方法返回值,bool类型
            if (!IsExist)
            {
                return "此用户不存在";
            }
            //判断用户名和密码是否正确
            else
            {
                //定义result来接收B层的返回值
                int result = Login.User(user);
                //定义B层要返回的值,三层表达式
                string message = result == 1 ? "登陆成功" : "登陆失败";
                return message;
            }

DAL(Data access layer)

D 层是数据访问层
就是对数据库的增删改查都会在这里实现,访问数据库获得B层想要的数据,获得数据后传给B层

 //判断数据库中是否存在此用户
        public bool IsExitUser(Entity.Users user)
        {
            //实例化SqlHelper
            SqlHelper sqlhelper = new SqlHelper();
            SqlParameter[] sqlparas = { new SqlParameter("@ID", user.ID) };
            //SQL语句
            string sql = @"select * from Users where ID=@ID";
            //调用执行SQL语句的方法
            DataTable dt = sqlhelper.ExecuteQuery(sql, sqlparas, CommandType.Text);
            //接收查询到的数据,这里是查询到的行数
            int sum = dt.Rows.Count;
            //判断行数是否为1,如果为1则返回true,如果不为1则返回false
            bool result = sum == 1 ? true : false;
            //返回结果
            return result;
        }

SqlHelper

这里简单解释一下 SqlHelper ,SqlHelper简单了说就是把对数据库的增删改查先写好封装起来,然后当在D层用到的时候直接调用就可以了,就不用再多次的去写这些内容了

后记

当我开始理解三层,仿佛进入了一个大泥潭,最开始是越急越陷越深,而当我慢慢走过来,发现其实还好,理解的地方慢慢的多了起来,开始有了自己的思路,开始着手写,开始理解,这种感觉很是舒服,虽然理解的还是不够深,但是还是慢慢的开始学习了,虽然还有焦虑,但是这种焦虑总会过去的,有写的不对的地方麻烦大家帮我指出来!感谢您的观看!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值