重构机房收费系统—浅谈三层

重构机房基本完成了,期间三层重构完了,推翻之后,再重构七层(外观和工厂),再重构,来来回回用了一个月........

重构机房从画图画到一半就废弃了,因为对三层不熟,之后,做完了,才敢重新拾起来画。画图先从包图开始,宏观上有个了解:

(一)重构机房包图:

先前画包图的时候,跟师傅交流,结果被一个师姐给笑话了,因为我认为:它们各个层之间都是双向箭头的,后来才知道,箭头表示调用关系,B层只能被U层或外观调用,B层不能调用U层,所以不存在双向箭头,大家注意。

在我这次重构中是严格按照上面的图中来的。

对于UI调用外观(Facade)或者UI层调用BLL层,都可以:

UI调用外观:客户端不知道B层的存在,降低了与B层的耦合。一旦用户的需求有变动,只改U层,加一个B层就可以了。

UI调用B层:有些功能很单一的,其实可以直接UI层调用B层就行了,加上外观反而觉得有多此一举了。

大家重构度数自己把握就可以了。

(二)重构机房用例图

关于用例图,我觉得有两种分类的方法:

第一种:可以按照功能来区分,功能按照大的可以分为三类:查询功能、维护功能、运算功能

第二种:可以按照角色来区分,角色可以分为三类:一般用户、操作员、管理员

按照功能来划分举个简单的例子:运算功能:

按照角色划分:

在做第一次机房的时候,我们基本上就是按照角色来划分的。

按照角色划分:简单直观,一个用例就是一个界面,并且从整体上我们整个设计很清晰,宏观上也很容易接受。

按照功能划分:B层是按照功能划分的,这里如果你是按照功能划分的话,B层是很简单就可以做成的,但是一定要注意不要越缠越乱就行。

我是按照角色划分的。

(三)重构机房的类图

以充值为例:

这里两个ICard和IRecharge其实是接口,为了与上面的七层的图回应,就这样画了。

在类图中我们不难看出U层是按照界面划分的,一个UI为一个界面,外观层和B层是按照功能划分的,一个界面可能有很多个功能,有对应一个外观和多个B层,B层的功能要细化,外观只有一个,一个外观调用多个B层。U层只知道外观不知道B层的细化功能。比如说充值(首先要判断卡号是否存在,判断充值金额是否低于最小金额,recharge表中添加数据,对应card表中cash字段的修改。),充值只有一个界面反应用户的需求,外观为一个,但是B层会有几个类分别为:查询card表、查询basicdata表、添加recharge表、修改card表。每一个功能都是一个B的类,这样降低耦合。

重构机房收费系统—浅谈三层

时间: 2024-10-07 02:15:51

重构机房收费系统—浅谈三层的相关文章

重构机房收费系统总结1之配置文件+反射+抽象工厂

在重构机房收费系统之前就一直听说这次重构要用反射+配置文件.深远的作用不知道,但是在这次重构用到,目的还是挺明确的:就是为了更换数据时方便,遵循开放-封闭原则,解决了可维护和可扩展的问题. 下面就以机房收费系统登录为例来看看配置文件+反射的用法.机房收费系统登录用到的数据库表是User_info表(用户表).我利用的是三层思想,先看一下我的整体架构! 下面看看配置文件+反射+抽象工厂在登录时访问数据库User表时的用法. 1.先进行配置文件操作 步骤:(1)在VS资源管理器的新建项目UI中,会有

重构机房收费系统之 模板方法模式

对于模板方法模式的使用,我懊悔自己用晚了,由于我们的机房收费收费系统有非常多窗口是差点儿一样的,假设我们不用模板方法模式,就会大大添加工作量,首先,我们须要反复的创建窗口,其次我们的代码量也会大大添加,就是复制.粘贴代码也是一件让人摒弃的事情,所以推出模板方法模式,用意就在降低代码反复,降低工作量,通过求同存异的思想来实现.以下看一下我在组合查询中用到的模板方法模式: 首先,创建父窗口,父窗口的创建就是普通的winform,我们知道组合查询这块儿一共同拥有四个窗口是大同小异的:学生上机状态查看.

重构机房收费系统前夕

VB版的机房收费系统完了之后,到c#,几乎没怎么写代码了,重新敲起那段回忆,还依稀能看到以前的影子,但是很多理论的知识感觉都已模模糊糊. 设计模式是面向对象编程的大牛们总结出的很多经典的面向对象程序设计的套路,面向过程就像是迷途的孩子,走的路越多,越难以找到顺着道找到回家的路,而面向对象就像是有了家的孩子,走到哪都能找到回家的路.呵呵,当然是有家的孩子好了. 学了UML之后,我们知道施工需要图纸,做一个项目,需要建模,学了设计模式之后我们知道程序的设计要考虑的不仅仅是写代码的时候方便,而更多的是

重构机房收费系统——数据库设计

曾记得,第一次编写机房收费系统的文档模板,整整有12个文档需要编写,仅仅花了两三天的时间就让师傅验收,完结项目,就这样囫囵吞枣的文档编写完成了. 要知道:欠下的账,终究是要还的.现在到了机房收费系统个人版重构阶段, (1)进行数据抽象,设计局部概念模型: (2)将局部概念模型综合成全局概念模型 (3)就可以按要求绘制机房收费系统数据库概念设计模型--ER关系图. 可以说,之前的数据库的概念设计给我奠定了一丢丢的设计基础,外加<数据库系统原理>中的三范式定理,本着求知好学.虚心请教的理念,于是乎

【机房收费系统个人版】三层登陆

机房收费个人版这个项目,很早就开始进行了,但是直到现在还没有完成..原因有两方面,首先是自身的个人管理不到位.做事拖拖拉拉,没有很好的节制自身的不良习惯:其次是思想价值观极端化.世界上没有谁能将所有事情都做得完美无瑕,追求完美是一个美好的过程,但最终还是需要一个结果的.当鱼和熊掌不能兼得时,那么就要放弃,选择最重要的坚持下去!不要去纠结,会让你发疯.. 下面这张导图是我对三层的理解以及敲代码的指导方针. 首先,三层登陆由四部分组成.分别是UI层.BLL层.DAL层和Models实体.UI层的作用

重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)

你能保证你的程序不会出问题吗? 不能 当你的程序执行到某个地方发生了你不想要的结果.你是否想让它一错再错? 不想 你是否想让你的程序占着茅坑不拉屎? 不想 你是否想知道你的程序出错的原因? 想 看了了这4个问题之后.假设你的回答和我的一致,那么请看下文 trycatch finally的使用方法: try '你想要写的程序 catch '捕获你想写的程序里面全部发生的异常 finally '不管发生还是不发生异常,你都想运行的代码 演示样例: Dim Update_Info As String 

vb.net版机房收费系统重构

机房收费系统重构版终于正式开工了! 前几天,刚刚看完三层的视频,在视频中详细的讲解了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就很快就开始机房收费系统的重构了.可是谁想到,当我一打开编程软件,就让我"碰了一鼻子的灰"!首先是不知道vs 怎么用,其次就是看三层的时候,登录的实例使用C#写的,而这次我们需要用VB.NET写,所以对于其中的语法是知之甚少.虽然,前段时间我看了一遍台湾讲师--曹祖胜的<VB.NET 视频>,但是他讲的几乎都是一

vb.net版机房收费系统重构的成长历程(功能实现篇)

重构机房收费系统,功能是不变的,需求是不变的,系统背后的代码,架构发生了改变.做过vb6.0版的系统 后,利用VS的VB.NET平台, 通过调整程序架构,加入了设计模式,改善软件的质量.性能,提高软件的扩展性和维护性.相比旧版系统,新版系统主要亮点有: 亮点一:代码分层管理,清晰明了 亮点二:加入工厂和接口,代码复用较多,减少了重复或相似的代码. 亮点三:用到了存储过程.一方面减少了代码量,另一方面也相当于是一个事务的执行.比如注册或者结账需要同 时操作多张表,这几个表必须同时被操作成功后才可以

机房收费系统个人重构版:透过文档谈文档驱动开发

[背景] 机房收费系统个人重构已接近尾声,在最后阶段自己去补文档以及其中涉及到的图!经过将近一周的奋战将其完善,并最终通过师父的验收.透过这次机房重构写文档和画图,自己感触颇深,在此与大家共享. [文档驱动下软工开发流程] ·软工简介: 从上世纪六十年代的软件危机之后,诞生了软件工程.此后随着人们需求越来越高,导致系统功能复杂度越来越大!要想解开发这样大系统,像之前单个人开发是不可能完成,毫无疑问合作开发就是很好解决方案:但随之而来的是如何控制许多人按照一定的规范在一定时间内将系统按照一定标准完