设计模式中类的关系之组合关系(Composition)
2013-11-29 10:35
239 查看
组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;它同样体现整体与部分间的关系,但此时整体与部分是不可分的,它们具有统一的生存期,整体的生命周期结束也就意味着部分的生命周期结束,部分对象与整体对象之间具有同生共死的关系,组合关系中的部分,是不能在整体之间进行共享的。比如人和眼睛,当然,有人会说现在医学发达,眼睛可以移植给别人,如果是这样的话,你可以理解人和眼睛的关系为聚合,这都是在具体的场景下来确定的。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。
在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。 在UML中,组合关系用带实心菱形的直线表示。
UML示例图如下所示:
示例代码如下(完整代码见附件):
People.m文件:
从上面我们可以看到,Eye对象是在People对象里面创建的,所以在People对象生命周期结束的时候,Eye对象的生命周期也同样结束了。
源码下载 返回目录
在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。 在UML中,组合关系用带实心菱形的直线表示。
UML示例图如下所示:
示例代码如下(完整代码见附件):
People.m文件:
#import "People.h" @implementation People @synthesize eye = _eye; - (id)init { self = [super init]; if (self != nil) { _eye = [[Eye alloc] init]; } return self; } - (void)dealloc { [_eye release]; NSLog(@"People dealloc"); [super dealloc]; } @end
从上面我们可以看到,Eye对象是在People对象里面创建的,所以在People对象生命周期结束的时候,Eye对象的生命周期也同样结束了。
源码下载 返回目录
相关文章推荐
- 设计模式中类的关系之组合关系(Composition)
- 设计模式六种关系:依赖、关联、聚合、组合、继承和实现
- 设计模式中“组合” “聚合” “相识” 在不同场合下的意义和关系
- 谈谈有关设计模式的思想精髓:变继承关系为组合关系、如何创建对象(单例、状态、装饰者模式)
- 设计模式与泡mm的关系之Composite组合模式及组合模式的再思考
- 聚合和组合的关系(设计模式)
- 设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)
- 设计模式笔记之装饰模式---变继承关系为组合关系
- 设计模式中组合(Compose)和聚合(Aggregate)的关系
- 设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)
- 设计模式中类的关系
- 设计模式-组合模式
- 设计模式(13)---->Composite 组合模式
- 设计模式之组合模式
- Java设计模式透析之 —— 组合(Composite)
- 设计模式学习笔记(9)——组合模式
- 设计模式之组合模式
- 设计模式之UML类图的常见关系
- 设计模式(七)组合模式Composite(结构型)