`

组合和聚合的区别

阅读更多
1、组合和聚合的区别

组合,叫compose。在代码层面上用内部类实现,如果A类由B类组合而成,则A和B有共同的生命周期。打比方的话就是人和大脑的关系,人由大脑组合而成,如果人死了,大脑也活不成。用UML表示,是一个实心的框框。

聚合,叫aggregate。在代码层面上用字段实现,如果A类包含B类型的字段,则A和B有各自的生命周期。打比方的话就是人和公司的关系,公司由人聚合而成。用UML表示,是一个空心的框框。

2、protected和package可见性

今天有个刚毕业的问我这个问题,说protected和package有什么区别。一时居然没反应过来。。。protected的字段和方法是子类可见,包内也可见;package仅包内可见。也就是protected > package

3、怎么实现全局唯一的字段?

不知道“全局唯一”的描述是否严谨。说到类的唯一实例,马上就会想到用单例模式。如果说有这么一个场景,一个类定义了一个字段initialized,用这个字段的值为true或者false来决定是否初始化,为了避免重复初始化,应该怎么做呢?其实就是今天看logback源代码的一点感想。有2种方法:

一种办法是把initialized声明为static字段,这样的话就算有多个类的实例,但这个字段却只会有一个。

另一种方法当然就是使用单例模式了,不需要细说了。让我奇怪的是,为什么logback里为了解决同一个问题,上述2种方法全用了呢?让我有点疑惑,难道是作者一时兴起?

4、怎么描述一系列状态

最近做一个任务模型的设计,有点头大。上网查了一些资料,好像“任务”这个东西没有一个标准的模型。不像权限模型有一个成熟的RBAC,直接拿来实现就可以了。

只好自己设计这个模型,在状态名称上有点纠结。一种风格是完成时,“已创建”、“已派发”、“已接受”…………,另一种风格是将来时,“待派发”、“待接受”、“待启动”…………

感觉前者更贴近任务本身的状态;不过后者更贴近使用者的角度,而且可以描述处理任务的下一个步骤。大家觉得哪种比较好呢?

这篇博客就不往论坛上贴了,不然肯定被投新手,说不定还会被投隐藏,妥妥的。。。
1
1
分享到:
评论

相关推荐

    UML 聚合和组合的区别

    UML 聚合和组合的区别 UML 中的聚合和组合是两种重要的关联关系,它们之间的区别是很多开发者经常混淆的。以下是对 UML 聚合和组合的详细解释: 聚合(Aggregation) 聚合是一种特殊的关联关系,它描述的是一种...

    语言学纲要语法的组合规则和聚合规则PPT课件.pptx

    语言学纲要语法的组合规则和聚合规则 语言学纲要语法的组合规则和聚合规则是语言学中非常重要的一个概念。组合规则是指词语在组合成新的词语时所遵循的规则,聚合规则是指词语在组合成新的词语时所遵循的规则。这些...

    ATL 组合与聚合代码

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

    面向对象的依赖、关联、聚合、组合关系

    本文将深入探讨面向对象中的四种基本关系:依赖、关联、聚合和组合,以及它们在实际应用中的含义和用例。 ### 一、依赖(Dependency) 依赖是最弱的一种关系,表示一个类依赖于另一个类的接口或实现,但这种依赖通常...

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

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

    华三交换机配置端口聚合之三层端口配置静态和动态聚合

    华三交换机配置端口聚合是一种常见的网络配置方式,通过将多个物理端口组合成一个逻辑端口,提高网络的可靠性和传输速度。在本文中,我们将详细介绍华三交换机配置端口聚合之三层端口配置静态和动态聚合的过程。 一...

    UML中依赖泛化关联实现聚合组合的C#实现

    在 C# 中,我们可以使用继承、接口和委托来实现 UML 中的依赖泛化关联实现聚合组合。例如,我们可以使用继承来实现泛化关系,可以使用接口来实现实现关系,可以使用委托来实现依赖关系。 在实际开发中,我们可以...

    UML类图关系大全(关联、组合、聚合、依赖、泛化)

    本篇文章将深入探讨UML类图中的五种主要关系:关联、组合、聚合、依赖和泛化,以及它们在实际编程中的应用。 **关联** 是类之间的一种结构关系,表示类之间的连接或相互作用。它通常用一条实线表示,可以是单向或...

    UML类关系-依赖,关联,聚合和组合

    聚合和组合的区别 聚合和组合都是整体-部分关系,但是它们之间存在一些关键的区别: * 聚合关系是一种弱关系,表示整体与部分的关系比较弱。例如,计算机和它的外设之间就是聚合关系。 * 组合关系是一种强关系,...

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

    聚合和组合都表示类之间的整体与部分关系。它们之间的区别主要在于整体与部分之间的关系强度。 1. **聚合(Aggregation):** - 特点:表示整体与部分之间的弱关系,部分可以独立于整体存在。 - 示例代码: ```cpp...

    UML中依赖泛化关联实现聚合组合的Java实现

    ### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 ...以上Java代码实现了UML中描述的泛化、关联、聚合与组合关系,通过具体的类和方法定义展示了这些概念在实际编程中的应用。

    语言学纲要音位的聚合和组合PPT课件.pptx

    本篇深入探讨了音位的聚合和组合关系,音位的区别特征,以及音节的组成和性质,通过《语言学纲要音位的聚合和组合PPT课件》这一教材,我们可以系统地了解这些复杂的概念。 首先,音位的概念是音位学的基础。音位是...

    UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    在UML中,有六种主要的类间关系:继承、实现、依赖、关联、聚合和组合。理解这些关系对于设计高质量的软件架构至关重要。 1. **继承**: 继承是类与类之间的一种层次结构关系,表示一个类(子类)可以从另一个类...

    UML中继承实现依赖关联聚合组合的联系与区别_线条箭头.doc

    UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...

    cisco链路聚合实验

    链路聚合是一种典型的网络技术,用于将多个物理链路组合成一个逻辑链路,从而提高网络的可靠性和带宽。Cisco设备支持多种链路聚合协议,包括LACP(Link Aggregation Control Protocol)和PAgP(Port Aggregation ...

    电子功用-导电性聚合物组合物和器件

    电子功用领域的核心在于导电性聚合物组合物及其在器件中的应用。导电性聚合物是一种新型...这份“电子功用-导电性聚合物组合物和器件”的文档将详细解析这一主题,为相关领域的研究者和技术人员提供宝贵的参考资料。

    网络游戏-液晶组合物、衍生自所述组合物的聚合物网络及其制备方法.zip

    液晶组合物的选择和设计对于显示屏的响应速度、对比度和视角等关键性能指标至关重要。 聚合物网络是由液晶组合物经过化学反应形成的三维结构,它们在保持液晶特性的同时增加了机械稳定性。在游戏场景中,这种聚合物...

    超强的聚合搜索引擎代码

    在IT行业中,搜索引擎是至关重要的组成部分,特别是在网页和信息爆炸的时代。"超强的聚合搜索引擎代码"是一个专为网站设计的工具,旨在提供高效、全面的搜索功能。聚合搜索是一种技术,它结合了多个来源的数据,以...

    【Win32】进程内COM的两种复用方式(包容和聚合)

    聚合则适用于希望保持组件独立性,同时又能组合功能的场景,例如一个用户界面组件可能包含多个子组件,每个子组件都有自己的接口和功能。 总之,理解并掌握COM组件的包容和聚合复用方式对于Win32应用程序开发至关...

Global site tag (gtag.js) - Google Analytics