1
先舉例說明,然後再澄清。這是我的第一篇文章,我也嘗試過搜索。包含對象是爲了被視爲構圖還是聚合而創建的?
示例1:在Car構造函數中創建引擎對象。
public class Car{
private Engine engine;
Car(){
engine = new Engine();
}
}
示例2:在Car類之外創建並通過Car構造函數傳入的引擎對象。
public class Car{
private Engine engine;
Car(Engine engine){
this.engine = engine;
}
}
示例3:在Car類之外創建並通過Car setEngine(引擎引擎)方法傳入的引擎對象。
public class Car{
private Engine engine;
Car(){}
public void setEngine(Engine engine){
this.engine = engine;
}
}
我認爲遏制是組合和聚合,包含的對象有一個所有者,如汽車擁有引擎。我認爲不同的是每個對象的生命週期以及它們被銷燬的時間。
組成:引擎對象在Car對象被銷燬時被銷燬。
聚集:引擎對象在Car對象被銷燬時仍然存在。
我的谷歌搜索和stackoverflow搜索造成歧義。
以上1,2和3中的幾個例子是組合,聚合還是兩者?爲什麼?上面的例子是關聯關係嗎?
聚合將是一個有兩個引擎的汽車。像普銳斯一樣。 –
看看這個。 https://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit –
示例2看起來像[策略模式](https://en.wikipedia.org/wiki/Strategy_pattern)。它可以模擬燃料注入與化油器; 4缸vs 6缸vs 8缸;等 – jww