2

我有点困惑,所以如果你能启发我。

  1. 当我通过类中的 new 运算符或使用 Singleton 创建对象时,它是一个组合吗?
  2. 当我调用工厂方法时,它也是组合吗?
4

2 回答 2

3

组合与聚合与组件对象的生命周期有关,而不是与组件对象的实例化方式有关。如果在处置包含对象时处置组件对象,则它是组合。如果组件对象可以继续存在,那就是聚合。

于 2012-09-05T23:29:25.023 回答
2

术语“组合”在 UML 和 OOP 中的含义略有不同。

在 UML 中,组合是一种更强的聚合形式,有点像“拥有”关联。

GoF 设计模式一书建议,在 OOP 中,应该优先考虑组合而不是继承。在这种情况下,组合只是意味着通过引用一个类而不是从它继承来提供功能。

看来您混淆了某些术语。创建和对象或调用工厂方法本身并不是组合。

于 2012-09-05T23:29:40.280 回答