某些设计模式中的聚合与关联
Aggregation vs association in some design pattern
在一些 class 几种设计模式的图表中,例如装饰器模式,我看到了一个聚合(在装饰器组件之间),但是在代码中,没有一个集合,只有一个变量声明为接口类型。
为什么是聚合而不是关联?
非常感谢
聚合只是关联的一种形式。它通常被定义为整体-部分关系,这导致聚合是一对多关系的假设,这不一定是正确的。任何关联或依赖关系都可以是一对多关系,但也可以是一对一关系。聚合也不例外。
与聚合的区别更口语化,因为很多人会假设它意味着一对多,你可以选择那样使用它;但是在一对一聚合中并没有本质上的错误。
您可以在这些参考资料中看到一些略有不同的观点。
- https://nirajrules.wordpress.com/2011/07/15/association-vs-dependency-vs-aggregation-vs-composition/
- https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/#N102B7
- What is the difference between aggregation, composition and dependency?
在一些 class 几种设计模式的图表中,例如装饰器模式,我看到了一个聚合(在装饰器组件之间),但是在代码中,没有一个集合,只有一个变量声明为接口类型。
为什么是聚合而不是关联? 非常感谢
聚合只是关联的一种形式。它通常被定义为整体-部分关系,这导致聚合是一对多关系的假设,这不一定是正确的。任何关联或依赖关系都可以是一对多关系,但也可以是一对一关系。聚合也不例外。
与聚合的区别更口语化,因为很多人会假设它意味着一对多,你可以选择那样使用它;但是在一对一聚合中并没有本质上的错误。
您可以在这些参考资料中看到一些略有不同的观点。
- https://nirajrules.wordpress.com/2011/07/15/association-vs-dependency-vs-aggregation-vs-composition/
- https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/#N102B7
- What is the difference between aggregation, composition and dependency?