关闭

机房合作之外观模式浅谈

359人阅读 评论(27) 收藏 举报
分类:
外观模式

概述

为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
之前写代码的时候,我总会把U层和外观层写的耦合性很高,这是病得治。将所有需要的方法或属性,组合一起放在Facade层,以备外界调用。如下图所示。

此时,用户不需要了解系统中的方法MethodA,B,C...只需要规定统一一致的Facade类就可以直接调用。掌握了模式的理论知识,接下来就是实践了。

结构


实现


两个子系统的类

<span style="font-family:Microsoft YaHei;font-size:18px;">#region 教师端外观类
    public class TeacherFacade
    {
        
        //登录
        public List<UserEntity > FacadeTeacherLogin(UserEntity User)
        {
            
            LoginBLL TeacherLogin=new LoginBLL();           //实例化B层登录业务
            List<UserEntity> list = TeacherLogin.InquireUser(User);  //调用B层登录方法

            return list;    //返回登录实体
        }
    }
    #endregion

    #region 学生端外观类
    public class StudentFacade
    {
<span style="white-space:pre">	public List<StudentEntity> FacadeStudentLogin(StudentEntity Student)
        {


            LoginBLL StudentLogin = new LoginBLL();           //实例化B层登录业务
            List<StudentEntity> list = StudentLogin.InquireUser(Student);  //调用B层登录方法


            return list;    //返回登录实体
        }</span>
    }
    #endregion
    </span>

外观类

<span style="font-family:Microsoft YaHei;font-size:18px;">public class JFFacade
    {
        TeacherFacade Teacher; //教师外观类
        StudentFacade Student;//学生外观类

        public JFFacade()
        {
            Teacher = new TeacherFacade(); //实例化教师外观类
            Student = new StudentFacade();//实例化学生外观类
        }

        //教师登录外观
        public List <UserEntity > TeacherLogin(UserEntity User)
        {
            List<UserEntity > list=Teacher.FacadeTeacherLogin(User);
            return list;
        }

    }</span>

客户端调用

<span style="font-family:Microsoft YaHei;font-size:18px;">public void TeacherLogin()
        {
            //判断卡号和密码是否正确
            JFFacade LoginFacade = new JFFacade();    //实例化外观类
            UserEntity User = new UserEntity();     //实例化User实体类

            User.userID = txtUserName.Text.Trim();//把txtUsername 的text属性去掉前后空格赋值
            User.password = txtPassword.Text.Trim();

            List<UserEntity> list = LoginFacade.FacadeLogin(User); //调用外观教师端登录方法

           
                if (list.Count != null && list.Count > 0) //用户名存在
                {
                    this.Close(); //关闭登录窗体
                    frmMainTeacher frmMainTeacher = new frmMainTeacher();  //显示教师端主窗体
                    frmMainTeacher.Show();

                    //在WorkLog表中添加值班记录

                }
                else
                {
                    return;

                }
<span style="white-space:pre">	</span>}
           
</span>



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场