博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
12.组合(Composition)
阅读量:5937 次
发布时间:2019-06-19

本文共 728 字,大约阅读时间需要 2 分钟。

      组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;它同样体现整体与部分间的关系,但此时整体与部分是不可分的,它们具有统一的生存期,整体的生命周期结束也就意味着部分的生命周期结束,部分对象与整体对象之间具有同生共死的关系,组合关系中的部分,是不能在整体之间进行共享的。比如人和眼睛,当然,有人会说现在医学发达,眼睛可以移植给别人,如果是这样的话,你可以理解人和眼睛的关系为聚合,这都是在具体的场景下来确定的。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

      在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。  在UML中,组合关系用带实心菱形的直线表示。

      UML示例图如下所示:

 

      示例代码如下:

class Eye{    deinit    {        print("Eye deinit");    }}class People{    var eye: Eye;        init()    {        eye = Eye();    }        deinit    {        print("People deinit");    }}var people: People? = People();//people和eye生命周期同时结束people = nil;

      从上面我们可以看到,Eye对象是在People对象里面创建的,所以在People对象生命周期结束的时候,Eye对象的生命周期也同样结束了。

转载于:https://www.cnblogs.com/LeeGof/p/5707575.html

你可能感兴趣的文章
Nginx的安装
查看>>
PHP下载远程文件及获取文件内容
查看>>
王高利:Redis安装
查看>>
MySQL缓存的查询和清除命令使用详解
查看>>
find_in_set()和in()比较
查看>>
我的友情链接
查看>>
Openstack 云计算 (一): kvm 虚拟机配置
查看>>
我的友情链接
查看>>
CentOS下载地址
查看>>
第二阶段团队进展报告(1)
查看>>
Linux 下的安装(源码包和RPM 包)软件包的命令方法
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
小程序错误TypeError: __webpack_require__
查看>>
云计算每周之“红黑榜”
查看>>
我的友情链接
查看>>
samba服务搭建与配置
查看>>
我的友情链接
查看>>
wdcp 安装
查看>>
C语言运算符优先级相关问题
查看>>
MP4视频播放器代码
查看>>