关闭

机房合作之外观模式浅谈

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

概述

为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
之前写代码的时候,我总会把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>



1
0
查看评论

机房收费系统合作版——周结账单之报表

前言: 报表这部分在16年8月份结束机房合作项目的时候被遗留下来一直没有解决好,也没有总结,直到年前验收的时候又一次相遇,现在它终于在经过“两年的奔波之后安全着陆”,赶紧收藏起来。 这次弄这个报表花了不少时间,也站在巨人的肩膀上折腾了很久~~~(*^__^*) ,今天在我将要放弃的时候,又坚持了...
  • ytm15732625529
  • ytm15732625529
  • 2017-02-02 22:07
  • 496

【机房合作】——总结

【前提】  寒假的时候我,雷哥,晓洁我们三个开始机房收费系统的合作之旅,经历不到一个月的时间,完成了第一个合作的项目。在这个过程中无论是从项目开发的角度,还是从学习的角度,收获都是非常多的!【文档和UML图】  首先感谢小伙伴们的信任,让我来当这个组长。也不得不说自己当不是很称职啊。合作版的机房开发...
  • jiadajing267
  • jiadajing267
  • 2016-04-10 11:33
  • 509

【机房合作】重新认识外观模式

机房收费系统合作版,是我们第三次与机房收费系统相遇的时刻。在个人重构的时候,我们就开始了“七层架构”之旅,其中外观模式是单独作为一层来开发的。 那个时候,也不理解外观是起到怎样一个作用,大话上的解释表面上容易理解,看完后自己也觉得很有道理。但在系统程序中,自己是只要经过BLL逻辑层的一个方法,就需...
  • u013034223
  • u013034223
  • 2015-08-06 19:40
  • 923

机房合作登录——装饰模式

装饰模式: 主要用来实现动态的添加功能。这样可以使得在需要新的方法时可以直接的添加新的类,主类保持不变,符合设计模式中“开放封闭原则”。       在机房收费的系统用户登录的过程中,可以使用装饰模式。在登录的时候我们分别需要验证用户名,密码,如果要求一个用户只能够登...
  • u013030682
  • u013030682
  • 2015-04-25 14:04
  • 868

【机房合作】UML图之包图再学习

在合作中对包图验收没有通过,对包图的理解不深刻,整幅图中,在包与包之间,只用了两种关系:实现和import。因此需要重新修改,可是修改起来比较费劲儿,于是查资料,跟霍亚静师傅和连江伟师傅交流,对包图有了更深一步的认识。下面跟大家说说我对包图理解的过程。有理解不正确的地方,还请指出。 我给两位师傅...
  • u013028876
  • u013028876
  • 2016-02-21 00:01
  • 726

【机房合作】浅谈SVN

配置管理(Configuration Management,CM)是通过技术或行政手段,对软件产品的生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。 配置管理的作用主要有两点:1、便于管理者了解进度 ...
  • u013036092
  • u013036092
  • 2016-01-05 15:53
  • 574

合作开发用到的几个 设计模式

自上次的个人版的机房收费系统后, 接下了的就是合作版的开发了.    要求是尽量添加一些设计模式,毕竟自己开发的时候用到的设计模式还是有限的,这次的重点不是在代码上.重点是 1 文档驱动;2.项目经理写文档不能讨论;3.分层开发完成完成;4.相对应的文档发给相对应的人,不能...
  • han_yankun2009
  • han_yankun2009
  • 2013-04-23 15:31
  • 1576

机房合作--状态模式应用

引言:     之前老师说过遇到问题尽量不要看提高班同学写的博客,太有针对性,现在发现即使看了这些博客,也不一定能弄得出来,真的是太考验我们的逻辑和耐心,经过这几天的研究在上机的时候用上了状态模式。 简介:     上机的时候需要判断卡号是否存在、是否使用、是...
  • wxr15732623310
  • wxr15732623310
  • 2016-05-15 10:09
  • 563

机房重构之--七层架构

经过软件工程的洗礼,秉承着软件“高内聚、低耦合”的开发原则,对机房系统设计要尽量达到解耦、易维护、易扩展的目的,对系统结构设计为如下七层:   分这么多层是实现软件灵活性的必须要求,但是这些层的作用都是什么呢?   (1)UI(User Interface):表示层,负责与用户进行交互,显示、接...
  • fightfaith
  • fightfaith
  • 2015-11-09 08:03
  • 1402

数据库连接池之外观模式+单例模式的实现

项目实践之技术突破之一Java应用程序访问数据库的基本原理  在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,  即Java语言通过JDBC技术访问数据库。JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一...
  • grland
  • grland
  • 2008-01-02 01:22
  • 1609