七层总结

一、前言    

 

    终于体会到了小伙伴们所说的成长的历练了,经历了将近两个星期的时间,终于完成了一个小目标。期间遇到的最多的问题就是自己静不下心去学习,同样也有有很多收获。

    七层是从三层的基础上转换来的,自己的三层已经有很长时间了,所以又看了一遍。中间发现了很多自己不会的知识,在这次的学习中不断地完善,出来混早晚是要还的,所以吃亏是福!

 

二、图

 

    画图也是自己重新学习的,不太熟悉,先来展示一下成果。

 

1、包图:

2、时序图:

 

三、七层理解

 

    UI层:给用户显示界面,接受用户输入的数据,并将输出结果返回给用户。

 

    Facade层:使用外观模式提供了一个高层接口,负责U层与B层之间的信息传递。U层只需要和外观层的接口联系就可以达到目的。同样B层不需要知道U层的存在,这样通过进一步解耦,使U层和B层有变动的时候尽可能的减少了影响。

 

    BLL层:业务逻辑层,处理一些业务逻辑。在这里是通过抽象工厂设计模式实例化工厂,利用反射的思想来访问D层。

 

    Factory层:工厂提供一个接口,通过抽象工厂的妙处,B层通过实例化接口指向的实现类对象,实现了B层与D层的连接。

 

    IDAL层:接口的作用,写了要实现的方法。

 

    DAL层:数据访问层,与数据库直接交互。有对数据库操作的增删改查功能。

 

    Entity层:实体层的作用是传递参数,它与每一次都可以关联,不断的被访问,保持着各层之间的联系、交流。

 

 

四、代码展示

 

    代码上这次基本上都是学习其他人的,也是从理解到不理解的一个过程,所以建议大家尽量的用自己的语组织好代码,即便是借鉴也要学过之后自己试着去敲!     

UI层

  private void btnLogin_Click(object sender, EventArgs e)
        {
          
            if (txtUserName.Text != "")
            {
                //讲文本框的参数传给实体层对象
                Entity.User user = new Entity.User();//实例化实体层
                //获取用户输入的数据
                user.UserName = txtUserName.Text.Trim();
                user.PassWord = txtPassWord.Text;
                //LoginUserName = txtUserName.Text.Trim();


                Boolean flag = false;
                //定义外观层对象
                Facade.LoginFacade Loginfacade = new Facade.LoginFacade();

                flag  = Loginfacade.Loginfacade(user);


                switch (flag )
                {
                    case false :
                        MessageBox.Show("用户不存在,请重新输入!");
                        break;
                    case true :
                        MessageBox.Show("登陆成功!");
                        this.Visible = false;
                        break;

                }
            }
            else
            {
                MessageBox.Show("请填写完整信息~");
            }

 

B层

namespace Login.BLL
{
    public  class QueryBLL
    {
        public bool UserBLL(Entity.User User)
        {
            Factory fact = new Factory();//实例化工厂
            Login.IDAL.ICheck  idal = fact.CreateUserInfo();//调用工厂方法创建接口
            DataTable  table = idal.SelectUser(User);
            bool flag;
            if (table.Rows.Count == 0)//返回的datatable类型,如果他的行数等于0,说明没有符合该账号密码的用户
            {
                flag = false;
             
            }
            else
            {
                flag = true;
            
            }

            return flag ;
        }
    }
}

 

Facade层

namespace Facade
{
    public class LoginFacade
    {   
        
        public Boolean  Loginfacade(Entity.User user)
        {
            bool flag;
            Login.BLL.QueryBLL ConfirmUserBLL = new Login.BLL.QueryBLL();
            flag= ConfirmUserBLL.UserBLL(user);
            return flag;

          
        }
    }
}

 

Factory层

 

using System.Reflection;//引用reflection命名空间,对反射引用
using System.Configuration;//添加对配置文件的引用

namespace LoginFactory
{
    public  class Factory
    {
        string StrDB = System.Configuration.ConfigurationManager.AppSettings ["DB"];

        public Login.IDAL.ICheck  CreateUserInfo()
        {
            //利用反射实现访问D层
            string ClassName=StrDB+"."+"UserDAL";
            return(Login.IDAL.ICheck)Assembly.Load(StrDB).CreateInstance(ClassName);
        }
    }
}

 

IDAL层

namespace Login.IDAL
{
    public  interface ICheck
    {
        DataTable  SelectUser(Entity.User User);
    }
}

 

DAL层

namespace LoginDAL
{
     public  class UserDAL:Login.IDAL.ICheck
    {
          public DataTable SelectUser(Entity.User User)
          {

              SQLHelper sqlHelper = new SQLHelper();
              SqlParameter[] sqlparams = { new SqlParameter("@UserName", User.UserName), new SqlParameter("@PassWord", User.PassWord) };
              string sql = @"SELECT * FROM[Userinfo] where UserName=@UserName and PWD=@PassWord";
             DataTable table = sqlHelper.ExecuteQuery(sql,sqlparams,CommandType.Text );
              return table;
          }
    }
}

 

    SQLHelper方法的实现大家可以根据自己的情况调整。

 

Entity层

namespace Entity
{
    public class User
    {

        public string UserID{set;get;}

        public string UserName { set; get; }

        public string PassWord { set; get; }

        public string Level { set; get; }

        public string Head { set; get; }

    }
}

四、总结

 

    自己最大的感受是知行不和。就是想得太多,做的太少,就造成了效率上的低下,心态上的不平稳,用句徒弟的话“Keep your footsteps up to your soul”!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值