经过半个月的熏陶,终于用七层架构实现了机房收费系统的登录功能,在此把学习中遇到的心得和大家分享下,希望能帮助到大家。
这是当年师傅指导时画的机房收费系统七层架构图纸,看着别晕,我理解了半个月才刚有点头绪。
开始的时候,我们不能一下实现这么多层,那我们就从简单的入手。第一版只有三层:UI(界面层)、BLL(逻辑层)、DAL(数据访问层)、Entity(实体),实现了4个窗体后发现没什么难度了。第二版加上Factory(工厂层)、IDAL(接口层),腻歪了2天,终于实现。第三版加上了Facade(外观层),在今天下午终于大功告成。
实现7层架构,首先要从IDAL层入手,然后DAL层分别实现IDAL层的各个方法,接着在Factory层实现创建接口的方法。BLL层根据Factory层返回的结果依次做出逻辑判断。为什么要在UI层和BLL层之间加上Facade层呢?
就拿登录窗体说吧!一般小小的登录需要做4件事。1.判断用户是否已经在线;2.判断用户名和密码是否正确;3.登录成功后向教师工作记录表写入登录时间;4.登录成功后获得当前用户的权限。
在BLL层我们要做的是对这4个过程返回值进行逻辑判断。如果没有Facade层,UI层一个小小的登录就要调用BLL层的4个方法,耦合度可想而知。如果我们在Facade层定义一个Login方法,把BLL层的4个过程进行整合,这样UI层只需调用Facade的一个Login方法就可以得到登录结果。
这个过程好比一个文件下有好多文件,什么格式的都有,加上Facade层后,就相当于对混乱的文件进行分类,比如我可以新建子文件夹Word、Excel、Pdf、PPT。把对于格式的文件放到对应文件下,从而达到方便管理的意思。
Entity层更是个好东西,原来一个注册窗体需要传好多参数,看着脑袋就大。实体呢,它像一个集装箱,把各种零零碎碎的实现给你打包,这样你传参数时一个实体就可以搞定。
现在UI层、Facade层、BLL层、Factory层是根据系统功能分类,比如类名是frmLogin、LoginFacede、LoginManager、LoginFactory,而IDAL层、DAL层、Entity层根据数据表分类比如IUserInfo、UserInfoDAO、UserInfo。
一个下午才理清了一个登陆,不知道这样分类是不是存在不合理的地方,希望大家给出宝贵意见。