博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三层--对你的认识再多一点
阅读量:4165 次
发布时间:2019-05-26

本文共 2654 字,大约阅读时间需要 8 分钟。

开篇碎碎念

之前画UML图的时候接触了一点三层,那时候对三层充其量就算是知道了,这段时间学习三层,可以说是认识了,我的感觉是三层富有挑战,自己也很兴奋,当然也感觉到自己要学的东西还有很多的。培养计划上说,对于三层的认识是一个持久的过程,我想这个过程一定是一个充满惊喜的旅途。


认识三层

三层是什么?

对于一个项目,我们把他的架构分为了三层:UI(界面层),BLL(业务逻辑层),DAL(数据访问层)。三层共同工作,且相互独立的完成这个项目要实现的功能。

你要问为什么用三层,什么时候用呢?

也不是所有的软件设计都需要用到三层的架构,如果编码简单,业务简单,数据存储简单的话,我们完全没有必要用到三层了。不过,如见软件的功能越来越强大了,项目的业务相对复杂,我们需要有单独存储数据的部分,同时对数据存储也有过高的要求,这时我们就要用到三层架构了。

为什么要用到三层呢?1.三层使得每一层之间的耦合度降低,一层的变化,不会或较小的影响到其他层的修改。2.三层之间的任意一层可以抽出来被另一个设计的层来替换,也就是这三层之间的组合式自由的。3.设计人员可以专注的设计某一层,效率提高了。


你知道三层是干什么的吗?

上面的三层我们说了半天了,这三层是干什么的呢?

1. UI:用户界面层,收集用户输入的信息,显示用户想要的信息。这一层没有业务逻辑,有点像拿来主义。 2. DAL:数据访问层,访问数据源,并对数据源进行增删该查的操作。这一层也没有业务逻辑,知识跟数据源打交道。 3. BLL:业务逻辑层,他是UI和DAL的一个桥梁,将UI层收集的数据传递给DAL,同时将DAL返回的数据传给UI供其显示;同时项目的功能实现当中的逻辑都是靠这一层来实现的。

下面是画的一个简单的图,帮助一下理解:

这里写图片描述


展示DEMO

关于三层怎么使用,我对他的认识也比较浅,通过自己敲的例子,来说一下三层吧。

UI

'收集的信息 string UserName = txtUserName.Text.Trim(); string password = txtpassword.Text.Trim();'调用BLL层的数据类Login.BLL .LoginManager mgr = new Login.BLL.LoginManager ();Login.Model .UserInfo userUI = mgr.UserLogin(UserName, password);'显示信息            MessageBox.Show("登陆用户:" + userUI.UserName);

DAL

public Login.Model .UserInfo  SelectUser(string userName, string password){    using(SqlConnection conn= new SqlConnection(DbUtil.ConnString)) ''访问数据库    {        SqlCommand cmd = conn.CreateCommand();        cmd.CommandText = @"select ID, UserName, Password,    Email from Users where UserName = @UserName and Password=@Password" ;        cmd.CommandType = CommandType.Text;        cmd.Parameters .Add (new SqlParameter ("@UserName",userName )); //增加两个参数        cmd.Parameters .Add (new SqlParameter ("@Password",password ));        conn.Open();        SqlDataReader reader = cmd.ExecuteReader();        Login.Model.UserInfo user = null;       while (reader.Read())       {           if (user == null)           {               user = new Login.Model.UserInfo();           }           user.ID = reader.GetInt32(0);           user.UserName = reader.GetString(1);           user.Password = reader.GetString(2);           user.Email = reader.GetString(3);       }       return user;    }   }

BLL

public   Login.Model .UserInfo   UserLogin (string userName, string password) //返回userinfo{    //throw new NotImplementedException();    //访问D 层的    Login.DAL.UserDAO uDAO = new Login.DAL.UserDAO();    Login.Model.UserInfo userBLL = uDAO.SelectUser(userName, password);        if (userBLL != null)        {            Login.DAL.ScoreDAO sDAO = new DAL.ScoreDAO();            sDAO.UpdateScore(userName, 10);            return userBLL;        }        else        {            throw new Exception("登录失败!");        }    }

结语

对于三层的学习,还在继续,日后使用三层的时候一定要时刻想着:灵活性,复用性,可维护性。才疏学浅,多多指教!

你可能感兴趣的文章
初学C#之windowes窗口应用文件
查看>>
linux常用命令
查看>>
Linux之vim(一)vim简介
查看>>
进程间通信的方式简单解析————管道
查看>>
git学习笔录
查看>>
Activity类中7个与活动生命周期回调有关的方法
查看>>
jwt与token+redis,哪种方案更好用?
查看>>
Comparator接口
查看>>
在二叉树中找到一个节点的后继节点
查看>>
寻找第K大
查看>>
String.trim
查看>>
缓存行 伪共享
查看>>
400 : perceived to be a client error 错误
查看>>
Establishing SSL connection without server's identity verification is not recommended
查看>>
扫描包不存在:pojo类找不到
查看>>
c语言中计算数组长度的方法
查看>>
java 数组定义
查看>>
java中的&和&&的区别
查看>>
Java的位运算符
查看>>
BufferedReader与Scanner的区别
查看>>