`
onlyor
  • 浏览: 377411 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

设计模式中聚合与组合的区别

阅读更多

聚合:

表示两个对象之间是整体和部分的关系,部分的生命周期可以超越整体。



组合:

表示两个对象之间是整体和部分的关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。

组合关系的“部分”,是不能在整体之间进行共享的。如人和眼睛的关系:

 

不过,如果你要说,眼睛可以移植,是不是说可以脱离人而存在,它们就不是组合关系了?其实,UML中对象的关系都是在相应的软件环境或实际场景下定义的,这里区别聚合和组合的关系,关键还是在于它们之中整体和部分的关系强、弱,以及它们之间的依附关系。如果刚才说眼睛可以移植给别人,那你也可以把它认为是聚合,这都要结合实际场景来说明。

另外两个比较重要的关系是关联和依赖:
关联:简单的可以认为,如果一个类作为了另外一个类的属性,那一定是关联关系。但你要知道,聚合是一种特殊的关联,而组合又是一种特殊的聚合。一般的关联我们认为是平级的、无整体部分关系的,如朋友关系。

依赖:

对象之间的临时关系,临时性体现在不超越方法的周期。

简单的说,在方法使用到的,如参数类,就一定是依赖关系。

 

--------------------------------------------------------------------------

以上转自blogjava-我的自留地

分享到:
评论

相关推荐

    六种微服务架构的设计模式.pdf

    在这篇文章中,我们将探讨六种常见的微服务架构设计模式:聚合器微服务设计模式、代理微服务设计模式、链式微服务设计模式、分支微服务设计模式、数据共享微服务设计模式和异步消息传递微服务设计模式。 聚合器...

    软件设计模式(java版)习题答案.pdf

    * 结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 * 行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 设计模式的优点 1. 设计模式融合了众多专家的经验,并以一种...

    设计模式那点事

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...

    关联,聚合,组合的区别及C++实现

    在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单 独工作更大的语义。

    ATL 组合与聚合代码

    在COM中,组合和聚合是两种关键的设计模式,它们都是用来实现对象间的关联关系,但方式略有不同。 **组合** 是一种“has-a”关系,类似于面向对象设计中的继承。一个对象(组合对象)包含其他对象(成员对象),并...

    UML学习之依赖_关联_聚合_组合_继承

    - 在设计模式中,如工厂模式、策略模式等,通常会用到泛化关系来定义一系列相关或相似的行为。 #### 二、依赖(Dependency) **概念:** 依赖关系是指一个元素(或元素的集合)使用了另一个元素的情况。在UML中,依赖...

    java23中设计模式详解

    Java中的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件系统中。这些模式在不同的上下文中提供了可重用的结构和行为,使得代码更加清晰、可维护和扩展...

    GOF 设计模式 中文 高清

    这本书详尽地阐述了23种设计模式,这些模式在面向对象编程和软件设计中具有广泛的适用性。以下是对这些设计模式的详细解释和应用: 1. **单例模式 (Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向对象的分析与设计(OOA/D),提高代码的质量和系统的可维护性。 #### ...

    设计模式实例源码

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中遇到的常见问题。这个压缩包文件名为“23种设计模式示例源码”,暗示其中包含了解决23种经典设计模式的具体实现代码,这对于初学者或者希望深入理解...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    设计模式是面向对象编程中用于解决常见问题的一系列模板。它们为软件设计提供了标准化的解决方案,帮助开发者更好地组织代码,提高软件的可维护性和可扩展性。本文档旨在深入探讨由Erich Gamma、Richard Helm、Ralph...

    java 设计模式试题

    题目中的第一个选项“同一问题的不同表现形式”(A) 描述了设计模式的主要应用场景之一。设计模式帮助开发者处理常见的软件设计难题,确保代码的可读性、可维护性和可扩展性。 ### 2. 面向对象的基本原则 面向对象...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    易学设计模式

    设计模式是经过时间和实践验证的解决方案,它们针对在软件设计过程中经常遇到的问题提供了一套标准的、可复用的方法。这本书通过轻松诙谐的语言,使得复杂的概念变得易于理解,适合初学者以及有一定经验的开发者。 ...

    设计模式C#版

    在设计模式中,聚合表示整体与部分之间的关系较为松散,部分可以独立于整体存在;组合则表示更严格的整体与部分关系,部分不能独立于整体存在。这是合成/聚合复用原则在实际设计中的具体应用。 五、.net本质 .NET是...

    Head First设计模式(完整高清版).pdf

    设计模式是软件开发中的经验总结,是解决常见问题的有效模板,可以帮助我们编写更灵活、可维护和可扩展的代码。这本书不仅适用于Java和Python等编程语言,其核心理念同样适用于其他面向对象的编程环境。 1. **设计...

    JAVA设计模式(java设计)

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...

    设计模式23种类图

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题。这些模式是经验丰富的开发者们在解决相似问题时积累的智慧结晶,通过标准化的解决方案,它们可以帮助我们写出更可维护、可扩展和可复用的...

    Java设计模式面试题汇总

    设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码...

Global site tag (gtag.js) - Google Analytics