包图+设计模式?

开工了机房收费系统重构版,确实是有点纠结。

由于这一次是全然应用面向对象的思想设计程序。尽管之前学习了非常多次面向对象编程。可是到实际应用的时候,还是会感到无从下手。纠结也没用,由于生活还在继续。。

机房收费系统,先从UML建模開始说起,刚刚画完包图和用例图。如今在头疼类图。说到类图,那真是无所适从,怎么抽象出类?

加入什么属性?

应该有什么方法?

类直接又改怎么联系?等等肯定不能像第一次绘图那样胡扯…没关系仅仅要去做,全部的问题都不是问题!

说到包图。虽说包图比較简单。心里也明确要依照刚学的三层思想来设计包图,可是详细怎么做呢?还是不懂,通过查阅资料稍稍了解了一些:

这就是机房收费系统的三层包图。多么简单挺清晰!

但就是如此就能够了吗?

答案是 No!

我们都知道包图,体现的是整个系统的架构。而系统的架构应该是相对稳定的,或者说可以良好的适应变化的.由于架构一变,代码必然伤筋动骨!这样就会导致成本上升、工期延长。这样的结果我们肯定不愿看见。那么怎么才干隔离或者掌控这样的变化呢?

上个月刚刚学习了《大话设计模式》,设计模式一共同拥有23种。依据模式的应用目的,又将它们分为3 类:创建型、结构型和行为型。

回想一下。另外在课本的第14页。我发现了这么一句话“重要的不是你将来会不会用到这些模式,而是通过这些模式让你找到“封装变化”,“对象间松散耦合”,“针对接口编程”的感觉。从而设计出以维护,易扩展。易复用,灵活性好的程序。

”细致想想“对象间松散耦合”,“针对接口编程”的目的也是为了封装变化。所以设计模式的作用则能够概括为四个字:“封装变化”

这个作用正好和架构设计的难题“隔离变化”有点一拍即合的感觉。当然事实也正是如此。设计模式能够封装变化。帮助架构“未雨绸缪”。

总的来说:要让设计的架构能适应变化,就是要预见组件之间的交互接口和编码实现将来可能发生什么变化,并对此做出正确的决策:採用正确的设计模式去封装变化。

在机房收费系统中的体现:

如图是增加设计模式后的包图,IFactory(抽象工厂)和IDAL(DAL的接口)是为了预防数据库的变更。

Facade(外观模式)是为了U层和B层松耦合。

大家可能会有疑问:程序中用到的设计模式都要体如今包图上吗?

答案是:No!

实际上我在构思重构版的时候还考虑到了应用策略模式和状态模式。可是为什么没有加入到上图中呢?这还要考虑这些模式的实际应用。策略模式的作用是封装算法,让算法的变化不影响使用它的客户。而这些算法逻辑都放在BLL层(业务逻辑层)所以策略模式能够作为包BLL的一个子包而存放当中。不存在调用关系。

说到调用关系,这也是包图的一个很重要的地方。包之间是否存在调用关系,以及调用的方向都须要我们细致的斟酌。

包图就先讲到这吧,第一次学习包图的时候。怎么没发现原来包图也有这么大的学问!

循循渐进没发现的还有非常多。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-09-30 04:23:10

包图+设计模式?的相关文章

Python设计模式 - UML - 包图(Package Diagram)

简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类.容纳其他元素.包与包之间的关系有泛化.细化和依赖,主要取决于包内部成员之间的关系. 包图建模步骤 - 分析系统的模型元素,运用分层设计把概念.语义和逻辑上相近的元素包含在同一个包中 - 对于每个包,分析包内每个元素的可访问属性,并标识出该元素的可见性 - 确定包与包中元素之间的泛化.细化.依赖关系

[机房重构]UML图(包图、类图、用例图、时序图)

机房重构画图是一个非常重要的一个阶段,机房重构之前也画过UML的图,但是这一次与上一次不同,这一次有分层的思想在里面. 包图 之前三层的时候各层之间的传递很清晰,包图也很容易就画出来了,先来看之前三层的包图.通过实体将输入的信息从U层传入B层,同时通过实体将信息从D层传入B层,B层进行判断,通过实体将结果返回给U层. 之前的三层不能很好的实现低耦和的思想,并且我们学习了设计模式,要继续进行分层,进行七层的编写.之前不太理解,看大家的博客,知道在U层和B层之间加入了外观模式,降低U层和B层之间的耦

<十四>UML核心视图静态视图之类图和包图

一:类图(行为类和实体类) --->类图用于展示系统中的类及其相互之间的关系 --->概念层类图 --->说明层类图 二:概念层类图 --->概念层的观点认为:在这个层次的类图描述的是现实世界中问题领域的概念理解. --->在概念层上,类图着重于对问题领域的概念化理解,而不是实现,因此类名称通常都是问题领域中实际事物的名称.就是处于概念阶段. --->比如:网上购物主要由商品,订单,支付卡这几个类构成. 三:说明层类图 --->说明层类图是搭建在现实世界和最终实现

uml系列(五)——对象图和包图

对象图,对象图是系统在某一时刻的对像.关系和属性值的快照.相当于看电视的时候的暂停.便于说明设计者的意图,模拟系统的运行状态,分析说明源代码. 再说对象图之前,我们首先需要了解对象是什么.我们一直都再说面向对象,那么到底什么才算是对象呢?对象都是由什么构成的呢?对象和类又有啥关系呢? 首先说对象,简单的说,能用类实例化的,具有状态.行为和标识的都是对象. 对象的构成,对象图由三部分构成:1.标识符.2.状态.3.操作.其中状态又包括属性和值这两种. 对象与类的关系,简单的说,如果类的表示是一个类

机房重构包图(从三层+实体到三层+实体+外观+工厂+接口+SQLHelper)

刚刚开始接触三层的时候,我只做了两个登录小窗体的例子.画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西).不过,欠下的总要还的.在做机房重构的时候,问题出现了.如果只用三层+实体,我能做出来,但是,要求重构不能只用三层+实体,那么,就要好好分析一下了. 首先说说三层+实体:就是表现层(U层)直接调用业务逻辑层(B层)的逻辑,业务逻辑层在直接访问数据层(D层),在把数据返回到B层后返回到U层.首先,只用三层+实体做程序时,灵活性不够高.如果想换数

UML-类图,包图

UML构造设计模型 一.类图 二.包图 三.组件图 四.部署图 一.类图 1.类:类由三格表示:类名,类的属性,类的操作 类名: 首字母大学 类的属性:-name:String     可见性 属性名:类型  =默认值 可见性包含4种:  + public     -private   #protected  *package 类的操作: +getName():String      可见性  操作名(参数):返回值类型 2.类与类之间的关系. 四种:关联关系: 泛化关系: 依赖关系:实现关系

UML之对象图和包图

UML的九种图基本都已经介绍完了,那么我们回过头再来研究一下对象图和包图.  一.对象图 谈到对象,我们不得不说一下对象,对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的,可以标识的,比如我和你就是两个对象,我们有自己的名字. 对象的图标与对象类一样是用实线矩形框表示的,矩形框中含有若干分隔框,分别表示对象的名字.属性以及其他成分等.对象名分隔框中包含一个对象的名字,置于框的中央.对象名的格式为:对象名:类列表[状态列表]. 对象图(Object Dia

UML视图(三)包图

包图,跟类的作用很相似,同是把相关或某方面具有共同特征的信息房子一起分隔开来:不同的是,包的范围更大容量更广. 包能容纳UML中的任何元素,例用例.业务实体.包(子包)等.Rose画图软件中的Use Case View(用例视图).Logic View(逻辑视图)和Component View(组件视图)就是三个包. 包是一种容器,如同文件夹一样,它将某些信息分类,形成逻辑单元,使用包的目的是为了整合复杂的信息. 包这么亲和,那为了避免无意的滥用,造成混乱.对包的划分进行了一些约束,总结为一句话

UML静态视图——类图、对象图、包图

画类图最重要的就是抽象出类,先来回忆类的基本内容. 一.类 1.类的概念: 类是面向对象程序设计的中的一个基本概念,类是具有相同属性.方法.语义和关系的一组对象的集合. 2.类的分类: 实体类:保存要放进永久存储的信息 边界类:位于系统与外界的交界处.包括所有的窗体.报表.打印机等硬件接口以及与其他系统的接口. 控制类:负责协调其他类的工作.一般每个用例都有一个控制类. 3.类的表达方式: 二.类图 类图是我们最常用的一种图,类图更直观的使我们了解一个系统的体系结构,类图通过图形化的方式描述了系