当前位置: 首页 > news >正文

工程画图-UML类图 组合和聚合

组合VS聚合

组合&聚合浅层理解

组合似组装,电脑组装,少装一个CPU行不?不行,没CPU哪还是电脑啊。用实心菱形表示。

而聚合似起义,聚是一团火,散是满天星。就像公司和员工,少你一个照常运转。

所以组合比聚合绑的更深。

组合&聚合代码级理解

现实中很好想象组合和聚合,离了谁不行,那就是组合, 离了谁照常运转那就聚合。组合是强关系,聚合是弱关系。

但是!在代码里呢?怎么表示呢?反正我总是在这方面混淆。这次务必是要记得彻底的。我们分析下哈。

请看下列代码。

class A {
  private B mB;
}

class B {

}

你怎么知道A和B它是聚合关系还是组合关系呢?

So,我们要引入组合和聚合关系的另外一个重大特点:生命周期

组合:在编程中,如果 B对象的生命周期依赖于A对象,当A的生命周期结束的时候,B必不能独立存活。当这种关系存在的时候,那就是组合关系。正如电脑和CPU, 在电脑看来,离不开CPU,其实在CPU看来,组不到主板上去,那自己的存在也没有什么价值。

聚合:如果A对象需要B对象的存在,离开了B对象也能运转,并且B对象即使离开了A对象,人家的声明周期依然正常,可以被别的对象继续使用。那就是聚合。

所以对于以下代码是组合!

class A {
  private B mB;
  public void A {
    this.mB = new B();
  }

  public boolean onDestory(){
    this.mb = null;
  }
}

class B {
  
}

对于以下代码聚合!

class A {
  private B mB;
}

class B {
  
}

如下图所示:

相关文章:

  • SDK中窗口调用
  • 什么是Stop The World
  • Apifox app的用法作用
  • Linux开发工具——apt
  • 从0到神谕:GPT系列的进化狂想曲——用AI之眼见证人类语言的终极形态
  • ffmpeg常见命令3
  • 【力扣hot100题】(054)全排列
  • 【USRP】srsRAN 开源 4G 软件无线电套件
  • Cribl 移除Fields
  • 应对高并发的根本挑战:思维转变【大模型总结】
  • 24信号和槽_自定义槽函数(1)
  • 优选算法的妙思之流:分治——快排专题
  • C++内存管理
  • Windows强制删除任何你想删除的文件和文件夹
  • TypeConverter
  • Linux常用基础命令应用
  • 【问题处理】webpack4升webpack5,报错Uncaught ReferrnceError: process is not defined
  • orangepi zero烧录及SSH联网
  • 打造下一代智能体验:交互型 AI 的崛起与实践
  • 【小沐杂货铺】基于Three.JS绘制太阳系Solar System(GIS 、three.js、WebGL、vue、react)
  • 石碣网站建设/免费合作推广
  • 建设制作外贸网站的公司/石景山区百科seo
  • 南浔建设网站/个人博客网页设计html
  • 做会员体系的网站/东莞网站提升排名
  • 个人网站 服务器/网站优化 秦皇岛
  • 哪里建设网站最好用/软件优化