机房收费系统的合作版

概述

       机房收费系统的合作版自己负责的是B层和Facade层,在做这块的时候有很多的感触:动态SQL语句;设计模式;合作开发应该注意的点。其中动态SQL语句的理解已经在上一篇博客中写了,如果你有意向的话,可以看一看,这篇博客主要是针对的是后两者的叙述。

设计模式

       合作开发系统中运用的设计模式:模板方法模式,外观模式,抽象工厂+反射+配置文件,单例模式,装饰模式,职责链,状态模式,策略模式。

       下面是我们系统代码体系结构图


下面简单的介绍一下这些模式的使用。

       模板方法模式

              模板方法模式在U层使用。先创建立了一个窗体, 在窗体上布置控件,设置相应的属性,把公用的代码以函数的形式写在这个窗体里,在相应的事件里写上相应的代码。这个窗体就是我们的模板,我们以继承的方式来用这个窗体,这样新添加的窗体就是会具有父窗体里面的所有东西,不用再写就可以直接用,我们也可以再重写相应的代码。

       外观模式

               没什么好说的,这个模式的运用,给上层项目的使用提供方便。

       抽象工厂+反射+配置文件

                运用反射创建D层对象时,经过D层吗?毋庸置疑,一定经过,不过这种经过一种是我们看的见的,一种是我们看不见。看的见就是我们在D层类中,创建了全局变量(对象类型的)或有相应的构造函数。构造函数是类实例化对象时调用的方法,这个方法我们可以写,也可以不用,当我们写上后,那么实例化该类的时候,我们单步执行程序时就会跳转到类中的这个函数,当我们不写时,系统会调用默认(根父类)的构造函数,此时,我们实例化类时,仍经过这个函数,但是,我们单步执行的时候就看不见了;创建全局变量(对象类型),我们在实例化该类的时候,其实我们在做的是一件这样的事:实例化一个对象,不过这个对象里面又有一个对象,而这个对象的执行必须要让代码执行,所以,我们单步执行的时候,一定会看到代码停留在那。

       单例模式

              一个类里有一个静态方法,有一个静态的全局变量,静态全局变量里存放的是这个类的对象,静态方法是对这个静态全局变量的判断来做出是不是要创建自己类的对象。我们创建这个类的时候,不是用的它的构造函数,而是用的它的这个静态方法。工厂类和SQLHelper类都可以用单例模式。

       状态模式             

        onLineBLL类里面的SetState方法就是所有具体的状态类设置下一个状态需要用到的方法,其Online方法就是对外提供的接口方法。TestOnLineBLL就是提供一个规范。每一个状态类里面其实就是一个If…Else举行,Else里一般就是设置下一个具体状态的代码,其用的方法就是onLineBLL类中的SetState方法,之所以能用这个方法是应为函数中的OnLineBLL对象。状态模式就是把复杂嵌套的If…Else拆分成多个小的If…Else。

       职责链模式

              职责链在图上看和状态模式非常的像,唯一的区别就是把“具体的状态类”分别替换了“TestOnLineBLL”的位置,继承和聚合的关系。“SetState”方法在类中被实现了。子类的方法也是一个If…Else结构,不过Else里面不是具体的“State”,而是通过调用端具体的实现的,这样就实现了,不需要知道那个类最终会帮你完成,只要你随便的实例化一个链头,并且给其串上其他的环,那么你就可以通过这个类的方法来帮你完成这个任务。

       装饰模式

               装饰模式用在了管理员登陆的过程中,装饰模式就是对象里面套对象的过程,相当于我们的嵌套函数,但嵌套的函数的功能是不同的,并且这种嵌套是我们自己设置的,这样我们就可以动态的实现添加新的功能了。

       策略模式

              策略模式用在了收费上。策略模式相当于我们使用的简单工厂,不同的是,策略模式的“工厂类”里面多了一个函数,这个函数完成了调用具体策略方法的过程。


合作开发注意的地方

       参数的赋值情况,我们的参数一般都是对象类型,此时,我们就需要给定义一下了,这个实体的属性都需要赋值吗,这个实体的属性都是在哪个层应该被赋值;方法的作用一定要写清楚,有时候方法里需要判断某个参数的属性才能完成其逻辑任务,此时,我们应该说明一下;对于出现DataTable一样的返回对象,如果需要我们进行操作里面的数据时,我们应该说明一下字段名;有方法返回值时,要说明一下具体返回值的含义。


总结

       继续加油!

 

posted @ 2013-06-17 21:06  爱生活,爱编程  阅读(181)  评论(0编辑  收藏  举报