JiveJdon Community Forums
在线61人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 26 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
bruce

发表文章: 191
注册时间: 2003年05月28日 09:53
给他发消息
我理解的聚合,关联,组合区别 发表: 2003年06月17日 22:31 回复
聚合,关联,组合 是对象之间的三种关系。从某种意义上说,继承是一种类的纵向关系,而聚合,关联,组合是对象的横向关系。


其关系强弱为 关联<聚合<组合

关联:在程序中相当于把已经实例化的对象A做为另一对象B方法的参数传递引用。

组合:即为内部类

聚合:其做法介于两者之间。不过我更觉得聚合相当于一个在外部已经申明的A,然后把A放在B中做为一个变量使用。

不知我理解的是不是正确,请大家从 **实现** 的角度发表一下意见吧。
cc

发表文章: 279
注册时间: 2002年08月07日 23:47
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 08:44 回复
聚合是1对多

1的那个要有一个collection储存多的那个
bruce

发表文章: 191
注册时间: 2003年05月28日 09:53
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 10:02 回复

CC,抱歉的很,实在不能认同你的说法。

你说的只是聚合中的一种情况而已。

象组合的实现:内部类。 一个类里面也可以有多个内部类,这同样是一对多的关系。

fuzhou

发表文章: 49
注册时间: 2002年12月03日 08:49
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 10:12 回复
不太理解,组合怎么会和内部类对应,我觉得组和纯粹表明的是一种对象之间的关系,而内部类在java中应该是一种多继承关系的某种实现?
cc

发表文章: 279
注册时间: 2002年08月07日 23:47
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 11:09 回复
没有你想象的那么复杂

组合就是一种很强烈的关联,必须在被组合对象生成的时候,组合对象也就必须生成了

像这样



public class a{

Collection bs = null;

public a(){
bs = new Collection();
bs.add(new b());
}

}

public class b{

}


bruce

发表文章: 191
注册时间: 2003年05月28日 09:53
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 12:08 回复
刚才找了一些内部类的资料,发觉我的理解有点不对。

因为内部类如果不是静态申明的话,必须被实例化后才能得到内部类对象。所以内部类可以与包容它的外部类有不同的生命周期。

其实我也只是想从实现的角度去认识 这三种强弱关系的不同。

CC,概念容易理解,你说的没错“组合就是一种很强烈的关联,必须在被组合对象生成的时候,组合对象也就必须生成了”,“组合”例子的代码
容易实现, 但“聚合”,“关联”的代码如何写才能区别出三者强弱关系呢?

请各位道友写几笔示意代码,让大家看看。
a_fan_ti

发表文章: 3
注册时间: 2003年06月18日 12:38
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 12:40 回复
聚合主要反映一种整体-部分的关系,组合反映某部分只能属于某整体(强聚合),他们在代码上是看不出分别的。
wwlhp@jdon.com

发表文章: 111
注册时间: 2003年06月03日 17:19
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 13:26 回复
To Bruce,
我认为从代码的角度理解聚合、关联关系完全是错误的。给你一段代码:
public class A {
private B ref;
public A( B ref ) {
this.ref = ref;
}
...
}
你怎么知道class A和class B是什么关系? 既可以是关联关系,也可以是合成关系,也可以是聚合关系。我觉得这三者要从语义上去理解。
jiangxi

发表文章: 8
注册时间: 2003年06月04日 16:19
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 16:43 回复
同意wwlhp@jdon.com ,我觉得3种关系都能产生
public class A {
private B ref;
public A( B ref ) {
this.ref = ref;
}
...
}
public class B{
...
}
应该从语意,内涵上去理解。比如:
关联:人->习惯,可有可无的东西
聚合:多边形<>->边,角 关系不是很紧密
组合:圆《》->圆心,圆弧 圆由圆心和圆弧组成
bruce

发表文章: 191
注册时间: 2003年05月28日 09:53
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月18日 23:20 回复
多谢楼上几位的回复,基本同意各位的见解。仔细想了一下,觉得要写代码,的确变化比较多,这也是我开始为什么想从实现上分析这三种关系的原因。
尽管实现方式很多,但我还是写了一种实现的代码,我没有写 把对象做为参数传递的情况,不过下面的代码道理是一样的。

======
组合
======
public class A {
//Constructor function must include B and C, all of them have the same life cycle.
public A() {
B b = new B();
C c = new C();
}
...
}
public class B{
}
public class C{
}
======
聚合
======
public class A {
public A() {
}
/* This method is a must method in class A, but this method is called after the constructor function is finished. So A and B,C have the different life cycle. Class A could exist without B,C*/

public void MethodOfA(){
B b = new B();
C c = new C();

}
public class B{
}
public class C{
}
========
关联
========
public class A {
public A() {
}

/* This method is not a must method in class A
Class A only have association with B C when this method is called
*/

public void Method-need-BC(){
B b = new B();
C c = new C();

}
public class B{
}
public class C{
}
jiangxi

发表文章: 8
注册时间: 2003年06月04日 16:19
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月19日 08:23 回复
楼上哥们写的我觉得是:依赖关系,符号------>
SUPERMY

发表文章: 24
注册时间: 2002年10月21日 20:10
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月19日 11:05 回复
我认为逻辑上,越来越强。但是,实现上是一样的,没有区别。
ripper

发表文章: 2
注册时间: 2003年06月23日 15:59
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月23日 16:00 回复
我不懂,我查书

Association:
Uses the services of another class

Aggregation:
A class “owns” another class

Composition:
A class is composed of another class; refers to an aggregation within which the component parts and the larger encompassing whole share a lifetime
hbliu688

发表文章: 1
注册时间: 2003年06月24日 12:58
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年06月24日 13:02 回复
在我感觉 ,以上的关联应该是依赖 ,而聚合与组合在实现上没什么区别的,在逻辑上的区别就是依赖的强弱 ,聚合---当整体消失 ,而部分可以存在 ,但是组合----整体消失 ,部分页消失 ,不知各位同意否?写出来在于共同提高 ,有错 ,各位指出.
olderYan

发表文章: 9
注册时间: 2002年12月06日 10:55
给他发消息
Re: 我理解的聚合,关联,组合区别 发表: 2003年07月03日 13:56 回复
F
这个主题有 26 回复 / 2 页 [ 1 2 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam