UML-包的设计
1、准则
1)、准则1
包在水平和垂直划分上,要功能性内聚。即:同类关联功能的模块化,将参与共同目的、服务、协作、策略和功能的强相关类型(类或者接口)组织在一起。
如:在NextGen项目中,Pricing包中的所有类型都与产品定价有关。
2)、准则2
由一族接口组成的包,将一组功能上相关的接口放入单独的包,与其实现类分离
3)、准则3
从一个包中,将不稳定的包拆出来,独立成新包。从而变成1个稳定包,1个不稳定包。
假设,有一个含有30个类型的大型包P1,其中有10个类经常被修改和重新发布。怎么办?答:将P1分解成P1-a和P1-b两个包,P1-b中包含这10个经常变动的类。
这样,开发者不用提心吊胆了。
4)、准则4
职责(被依赖或被调用)越多的包越需要稳定。
就是上文《逻辑架构的精化》中的”业务架构模块“,尽量不要出现,否则前一发动全身。但必须有时,如何增强包的稳定性呢?
法1:包中仅含或者主要包含接口和抽象类。
法2:不依赖于其他的包(这种包是独立的),或者依赖非常稳定的包,或者封装了依赖关系已使其不受影响。如:com.foo.nextgen.domain.posruleengine包,将具体的规则引擎实现隐藏在单独一个facade对象之后。实现改变时,依赖于此的包不受影响。
法3:含有相对稳定的代码,这些代码在发布之前经过充分的测试和精化。如:java.util包
法4:强制规定具有缓慢的变化周期。如:java类库的核心包java.lang不允许频繁改变。
5)、准则5
能抽象出独立包(不依赖别的包或类的包),尽量独立出来。
如:在com.foo.dao包下有个通用的工具类:JDBCHelper,最好将其放入com.foo.util.jdbc包下。
6)、准则6
使用工厂模式减少对具体包的依赖
领域对象工厂模式(Domain Oject Factory)
通过领域对象工厂接口创建所有的领域对象是常见的设计方法。
7)、准则7
包之间,不要循环依赖
解决方法:将参与循环的类型分解出来形成较小的新包。
UML-包的设计的更多相关文章
- UML和模式应用5:细化阶段(8)---逻辑架构和UML包图
1.前言 本章是从面向分析的工作过度到软件设计 典型的OO系统设计的基础是若干架构层,如UI层.应用逻辑(领域)层 本章简要考察逻辑分层架构和相关UML表示法 2.逻辑架构和层 逻辑架构 逻辑架构是软 ...
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系。
DCP ,BPL分别是什么文件,起什么作用?你在DELPHI中建立一个package然后保存一下,看看. bpl和Dll比较相似.只是BPL是BORLAND自己弄出来的东西!!!调用也和调用DLL相似 ...
- uml与数据库设计
一.类之间的关系如下图所示: 二.UML与数据库设计主要讨论的内容: 三.依赖关系强调的是类操作间的使用关系,类图到表结构的映射中并不涉及这种关系,所以只需讨论泛化关系.关联关系到表的映身规范. 1. ...
- Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系
一.Delphi中各种文件的介绍,及其关系. OXC: ActiveX控件.会被安装到某一个组件包DPK中,在Imports中会创建PAS.DCU.DCR三个文件. DLL: 动态链接库文件,它的Ex ...
- 牛腩新闻系统(一)——UML、数据库设计
牛腩新闻系统(一)--UML.数据库设计 一.初识牛腩系统 牛腩(Brisket)即牛腹部及靠近牛肋处的松软肌肉,是指带有筋.肉.油花的肉 块.这是一种统称. 若依部位来分,牛身上很多地方的肉都能够叫 ...
- 图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录)
图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录): https://download.csdn.net/download/qq_39932172/11 ...
- Python设计模式 - UML - 包图(Package Diagram)
简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...
- 设计模式学习笔记(二):UML与面向对象设计原则
1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...
- UML 包图 详细介绍
6.1 包图的概念 包是一种常规用途的组合机制.UML中的一个包直接对应于Java中的一个包,C#中的命名空间.在Java中,一个包可能含有其他包.类或者同时含有这两者.进行建模时,通常使用逻辑性 ...
- 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...
随机推荐
- JAVA String类常用方法
一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...
- JAVA笔记03 变量和运算符 面试题以及笔记
标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...
- poj 1854 Evil Straw Warts Live 变成回文要几次
Evil Straw Warts Live Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1799 Accepted: ...
- js数据类型 判断
1. js数据类型(两种数据类型) 基本数据类型:null undefined number boolean symbol string 引用数据类型: array object null: 空对象 ...
- 锤子科技向OpenBSD基金会捐款195 万
导读 专注于提供 OpenBSD 资讯的网站 OpenBSD Journal 昨日报道了锤子科技成为 OpenBSD 基金会 2019 年首位铱金捐赠者的消息. 根据 OpenBSD Journal ...
- django 中从外界借助多个网站时 static 的存放和整理
在 模板之家中 前端页面直接上去抓取 可是遇到重复 或者 版本不统一 所以 在每个app下面建立自己的 stastic 在制作的html 页面上方 导入静态页面 {% load static ...
- [Machine Learning][BP]The Vectorized Back Propagation Algorithm
Reference: https://www.cs.swarthmore.edu/~meeden/cs81/s10/BackPropDeriv.pdf I spent nearly one hour ...
- Java语言学习总结 扩展篇 包装类的概念及其使用
包装类 包装类的概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本 ...
- 前端01 HTML5
01工具使用 Sublime插件安装和使用 2Sublime插件安装和使用.pcf 3Sublime插件安装与卸载.pcf 4Sublime安装markdown插件.pcf 使用typora生成pdf ...
- composer install、require、update的区别