组合和聚合的区别
来源:互联网 发布:java上传文件的方式 编辑:程序博客网 时间:2024/04/29 13:11
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,直接拿来实现就可以了。
只好自己设计这个模型,在状态名称上有点纠结。一种风格是完成时,“已创建”、“已派发”、“已接受”…………,另一种风格是将来时,“待派发”、“待接受”、“待启动”…………
感觉前者更贴近任务本身的状态;不过后者更贴近使用者的角度,而且可以描述处理任务的下一个步骤。大家觉得哪种比较好呢?
这篇博客就不往论坛上贴了,不然肯定被投新手,说不定还会被投隐藏,妥妥的。。。
组合,叫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,直接拿来实现就可以了。
只好自己设计这个模型,在状态名称上有点纠结。一种风格是完成时,“已创建”、“已派发”、“已接受”…………,另一种风格是将来时,“待派发”、“待接受”、“待启动”…………
感觉前者更贴近任务本身的状态;不过后者更贴近使用者的角度,而且可以描述处理任务的下一个步骤。大家觉得哪种比较好呢?
这篇博客就不往论坛上贴了,不然肯定被投新手,说不定还会被投隐藏,妥妥的。。。
- 聚合和组合的区别
- 聚合和组合的区别
- 聚合和组合的区别
- 聚合和组合的区别
- 聚合和组合的区别
- 聚合和组合的区别
- 组合和聚合的区别
- 组合和聚合的区别
- 组合和聚合的区别
- 组合和聚合的区别
- 组合和聚合的区别?
- 聚合和组合的区别
- 组合和聚合的区别
- 组合和聚合的区别
- 聚合和组合的区别
- 组合和聚合的区别和联系
- 组合和聚合的区别讨论
- 聚合(Aggregation)和组合(Composition)的区别
- Notepad++代码自动完成(jQuery版)
- 面向服务的体系结构(SOA) 之 对于服务的理解
- 高级js教程3——Function类型
- 爸爸引导儿子成长的几件大事-好爸爸成就好儿子
- 据说这个视频不错,公司上不了,收藏一下地址回家看
- 组合和聚合的区别
- JVM学习笔记(一)——JAVA内存区域
- 读logback源码系列文章(二)——提供ILoggerFactory
- 读logback源码系列文章(三)——创建Logger
- logback官方reference摘要
- Test
- binutils工具集,软件开发利器
- 读logback源码系列文章(四)——记录日志
- 好累啊,终于写完了,去打一盘DOTA