Агрегация и композиция – это в основном концепции управления объектами.
Агрегация
Агрегация использует слабую связь , что означает, что она не содержит фактического объекта в классе. Вместо этого объект передается через функцию получения или установки. Это дает преимущество в том, что когда объект родительского класса умирает, объект дочернего класса остается нетронутым.
class House {
private Table table;
public void setTable(Table table){
this.table = table
}
public Table getTable(){
return this.table;
}
}
public class main(String[] args){
Table table = new Table();
// this house' table is set externally and will not be deleted
// upon deleting this House object
House house = new House();
house.setTable(table);
}
Композиция
Композиция использует плотную связь , что означает, что она удерживает объект. Создается переменная экземпляра, и в ней сохраняется объект. Всякий раз, когда объект родительского класса удаляется/удаляется, объект дочернего класса также будет удален.
class Human {
// This heart will be deleted and nowhere to access once its
// human gets deleted
private Heart heart = new Heart();
}
public class main(String[] args){
// this human's heart is set internally and will be deleted
// upon deleting this Human object
Human human = new Human();
}
Оригинал: “https://dev.to/muhammadwasi/difference-between-aggregation-and-composition-1p1h”