当前位置: 网学 > 编程文档 > 其他类别 > 正文

菜鸟之系统建模经验之谈:"机房收费系统"三层架构

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
98)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/44122846659.jpg" />
 

三层架构包图对应的程序集中的项目

 498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/81122846502.jpg" />

这时,我的理解仅仅停留在:具有UI、BLL、DAL层的系统就是使用了三层架构思想;当然三层架构系统中还可以加设计模式、SqlHelper等层,这时使系统具有多层;也稍微了解每层应实现什么功能。

这里我犯了几点错误,从图中可以看出

1) 命名不规范,当时我以为此系统是"机房收费系统",所以就在UI、BLL、DAL等前面加上了字母"JF",对于实体因为我看了一个视频中某老师使用的是Model,我也跟着写成了Model,没去问为什么。

2) 根本不理解三层之间真正的调用关系。没分清哪一层调用哪一层的方法,没明白谁向谁传参数。

3)理论上明白分层的目的,实际操作时却丢了分层的目的。我把设计模式"工厂方法"放到了D层,本来要使B层和D层分开的,我的做法恰恰不让他们分开;虽然程序可以实现,但是我违背了解耦的原则。

3.豁然开朗:经过师哥师姐指正,重新建模

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/37122846849.jpg" />
 

通过师哥师姐帮我分析,前后对比,我明白了分层的真正目的,也明白了自己上图的做法并没有解耦。

犯错了,领悟了,才了解为什么这么做是正确的… 

三.建模之路,我的收获

经过"机房收费系统"这个建模过程,我得到了几点系统建模经验,写出来与大家分享……

经验1.真正理解三层的意义,包之间的引用关系

所谓三层开发,就是关于表现层、业务逻辑层和数据访问层的开发。这其实只是大方向的分层,每个层中都有可能再分为多个层次和结构。三层架构中,上层包向下层包传递参数,上层包调用下层包的方法,下层包向上层包传回返回值。

经验2.既然用设计模式,就要明白设计模式的真正意义

这里我用到了工厂方法模式,工厂方法模式到底是干嘛的?工厂是用来创建对象的,实际上这里的工厂是为了生产DAL。使用工厂方法是为了使BLL层与DAL层解耦,另一个作用是为了使数据库更换方便。

注意:这个三层架构中使用了工厂+反射,若只使用工厂而不使用反射,又怎么建模呢?

经验3.架构图要与程序集代码完全对应

软件设计完,编写代码过程要完全按照图来进行,图和文档是我们编写代码的依据。这里所说的对应不仅仅指包图名称与程序集中项目名称对应,而且要使包中的引用关系与程序集中的引用相对应。

注意:程序集中的引用项与包图之间的引用关系是一个意思。

经验4.程序集中的项目引用项,不能添加多的引用,也不可少引用某层

看下图

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/B9122846716.jpg" />

这个图添加的引用是正确的,有的人在调试程序时出错,就在引用项中加入了"DAL"。看下面的错误图,比较与上图的区别:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/25122846881.jpg" />
 

在UI层引用"DAL"就错了,因为编写好的程序打包后DAL不是仅仅打包成一个.DLL文件,而是将DAL.DLL文件打包到UI中了,这样做,更换 DAL时,系统就会报错。为了解决这一问题,需要使用深层路径,只是将DAL的路径打包到UI中,也就是使引用中不含有DAL 而 debug项中含有DAL相关项,这样打包完依然是解耦状态,这时更换DAL,只要路径对了,就不会报错了。

还有一点,有的人将SqlHel

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号