我有点困惑,所以如果你能启发我。
- 当我通过类中的 new 运算符或使用 Singleton 创建对象时,它是一个组合吗?
- 当我调用工厂方法时,它也是组合吗?
我有点困惑,所以如果你能启发我。
组合与聚合与组件对象的生命周期有关,而不是与组件对象的实例化方式有关。如果在处置包含对象时处置组件对象,则它是组合。如果组件对象可以继续存在,那就是聚合。
术语“组合”在 UML 和 OOP 中的含义略有不同。
在 UML 中,组合是一种更强的聚合形式,有点像“拥有”关联。
GoF 设计模式一书建议,在 OOP 中,应该优先考虑组合而不是继承。在这种情况下,组合只是意味着通过引用一个类而不是从它继承来提供功能。
看来您混淆了某些术语。创建和对象或调用工厂方法本身并不是组合。