UML中关联(Association)和依赖(Dependency)的区别
来源:互联网 发布:淘宝客推广文案 编辑:程序博客网 时间:2024/06/07 21:27
原出处:http://blog.csdn.net/metasearch/article/details/2334853
(以下转载自UMLCHINA论坛)
在UMLCHINA精华区,看到了一些关联和依赖的讨论,似乎越讲越糊涂.我想谈一点自己的看法:1、在《UML参考手册》第37页中,指出“关联和泛化都是依赖关系,但是它们有更特别的语义,故它们有自己的名字和详细的语义。我们通常用依赖这个词来指其他的关系。”
2、在《UML参考手册》30页中,定义了关联为“关联描述了系统中对象或实例之间的离散连接。最普通的关联是一对类元之间的二元关联。关联的实例之一是链。”
3、接着,又说明了“关联关系是整个系统中使用的“胶粘剂”,如果没有它,那么只剩下不能一起工作的孤立的类。”
依赖关系,简单地来说就是“动态”的关系,提供者可能要求或指示依赖关系中客户的变化,依赖者为了达成要求被依赖对象行动的目的,依赖首先要取得对方的引用,以便于实施这个依赖
根据上述的分析,可以简单地作一个推论,仅对于这两个关系来说,对象之间存在四种关系:
1、无关联,无依赖
它们是无关的对象类。
2、有关联,无依赖
一般用来为其它对象类导航到关联端对象的桥梁。关联对象之间除了相互存储引用外,没有进一步的行为。也许,关联引用在程序中没有导航经过,这样的话,可以取消关联关系,就变成了(1)的情况。
3、无关联,有依赖
这是我们常常希望实现的松耦合关系的情景,对象之间没有直接的关联关系存在,所以它们没有直接存储对方的引用,使程序的可以更灵活地变动。但是为了获得对 象的引用以便实施依赖行为,比如调用,发消息,访问等依赖操作,可以通过间接关联来定位对方。一般情况下,设计者会为依赖关系提供一个存取方法,获取对象 引用。如果间接关联无法到达彼此对方,那么这个依赖是不可实现的,这种“伪依赖”要么是程序设计的逻辑错误(关系至少出现一个对象),要么是正常的 NULL对象(关系允许0个对象出现)。
4、有关联,有依赖
当然,这是最简单,也是最直接的实现了,它的意思也表达的最清楚。依赖的实施直接通过本身的关联引用进行。这时,对象间的耦合关系确实比较强了,看需要是否解耦或不变。
============================================================================
对类而言依赖存在的理由有:B作为一个参数被传递给A众所定义的一个方法(参数可见性);B在A的一个方法众被声明未局部对象(局部声明可见性);B对A全局可见(全局可见性)
而关联一般应来描述普通的属性可见性(B是A的一个属性, 是一种相对长久的可见性, 是普遍存在的,)
==============================================================================
依赖一般的表现方法是方法的局部变量,或者是方法内对静态方法的引用!
关联一般的表现方法是对象的全局变量!
依赖:
class A { void methodA() { B b = new B(); b.methodB(); } }
关联:
class B { B b = new B(); void methodA() { b.methodB(); } }
- UML中关联(Association)和依赖(Dependency)的区别
- UML中关联(Association)和依赖(Dependency)的区别
- UML中Association(关联), Aggregation(聚合), Composition(组合)和Dependency(依赖)辨析
- UML中Association(关联), Aggregation(聚合), Composition(组合)和Dependency(依赖)辨析
- UML中依赖和关联的区别
- UML中关联和依赖的区别
- UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别
- UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别
- UML中关联关系和依赖关系的区别
- UML中关联关系和依赖关系的区别
- UML中关联,依赖,聚集,组成的联系和区别
- UML中关联,依赖,聚集,组成的联系和区别
- UML中关联和依赖的区别收集大全
- UML中关联,依赖,聚集,组成的联系和区别
- UML中关联与依赖的区别
- UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
- 泛化(Generalization) 关联(Association) 依赖(Dependency) 聚合(Aggregation)
- 泛化(Generalization)/关联(Association)/依赖(Dependency)/聚合(Aggregation)
- 伤肾的九个恶习及解决办法(图)
- Android数字证书具体应用机制
- linux 下查看系统资源和负载,以及性能监控
- 学生仔的常见缺点
- MFC下托盘图标的实现和托盘菜单
- UML中关联(Association)和依赖(Dependency)的区别
- (Android学习笔记)读写SD卡文件
- 2014华为校招实习生机试样题【part 2】
- centOS目录结构详细版
- 如何穷养儿子,富养女儿
- hibernate聚合函数关联实体bean
- 数组与指针
- 公有云上运行工作负载比在内部IT环境中运行工作负载更便宜吗?
- Oracle 执行计划