三层--对你的认识再多一点

开篇碎碎念

之前画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("登录失败!");
        }
    }

结语

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值