Агрегация и композиция – это в основном концепции управления объектами.
Агрегация
Агрегация использует слабую связь , что означает, что она не содержит фактического объекта в классе. Вместо этого объект передается через функцию получения или установки. Это дает преимущество в том, что когда объект родительского класса умирает, объект дочернего класса остается нетронутым.
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”