【设计模式】关联关系与依赖关系

UML 图将事物之间的联系分为 6 种:关联、依赖、聚合、组合、泛化、实现

我认为关联关系和依赖关系非常不好理解。

我们看下定义:

关联:表示一种拥有的关系。具有方向性。如果一个类单方向的访问另一个类,称为单向关联。如果两个类对象可以相互访问,称为双向关联。

依赖:如果一个类的改动会影响另一个类,则两个类之间存在依赖关系。

根据上面的定义,如果 A 和 B 之间存在关联关系,那么必然存在依赖关系。那么关联关系与依赖关系的关系应该是这样的。

这张图的描述,还是太粗浅了。经过思考,我认为可以从以下三个方面来比较关联关系和依赖关系

  • 强度:关联关系比依赖关系更强。关联关系意味着对象之间有直接的联系,而依赖关系则更多地体现在类的设计上,即一个类的实现细节依赖于另一个类。
  • 表现形式:关联关系通常表现为两个类之间的双向或多向交互,而依赖关系往往是单向的,一个类的变化会影响另一个类的功能。
  • 持续性:关联关系通常代表的是长期存在的关系,而依赖关系可能是临时的或仅限于某个特定的操作或方法调用。

关联表示的事物间关系更紧密,联系更强,耦合度更高,一般表现为双向的依赖,这种关系是长期持有的。表现为 A 拥有 B,B 也拥有 A。

关联关系最明显的设计模式是:观察者模式,观察者和主题是相互持有的。所以观察者模式也是争议比较大的模式。

依赖表示的事物间关系更弱一些。一般表现为接口参数。比如说 A 的某个接口,以 B 为参数,但是 并不持有 B。依赖一般为单向的,但是偶尔也有双向的,比如说:访问者模式就是一个双向依赖模式。A 的接口参数是 B,B 的接口也以 A 为参数。

相关推荐
workflower15 小时前
情境感知系统
人工智能·机器学习·设计模式·自然语言处理·机器人
咖啡八杯17 小时前
设计模式中的原则
设计模式·接口隔离原则·里氏替换原则·开闭原则·合成复用原则·单一职责原则
安冬的码畜日常19 小时前
【工欲善其事】深入理解 Node.js 带并发上限的异步任务批量执行逻辑
javascript·设计模式·node.js·ai编程·异步编程·并发执行
AI大法师1 天前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
晚安code1 天前
干掉成山的 if-else:工厂造、策略选,一文讲透两个模式的配合
后端·设计模式
workflower2 天前
从幻觉,到现实
人工智能·深度学习·机器学习·设计模式·机器人
电子科技圈2 天前
第二代无线平台历久弥新,赋能物联网创新迭代
人工智能·嵌入式硬件·mcu·物联网·设计模式·硬件架构·iot
choumin2 天前
创建型模式——工厂方法模式
c++·设计模式·工厂方法模式·创建型模式
choumin3 天前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
37.2℃9953 天前
Claude Design哪个公司技术好
python·设计模式