Совокупный корень - это сложное имя для простой идеи.
Главная идея
Хорошо разработанная диаграмма классов инкапсулирует ее внутренности. Точка, через которую вы получаете доступ к этой структуре, называется aggregate root
.
Внутренние элементы вашего решения могут быть очень сложными, но пользователь этой иерархии будет просто использовать root.doSomethingWhichHasBusinessMeaning()
.
пример
Проверьте эту простую иерархию классов
Как вы хотите ездить на своей машине? Выбрал лучший API
Вариант А (просто как-то работает):
car.ride();
Вариант B (пользователь имеет доступ к инерналам класса):
if(car.getTires().getUsageLevel()< Car.ACCEPTABLE_TIRE_USAGE)
for (Wheel w: car:getWheels()){
w.spin();
}
}
Если вы считаете, что вариант А лучше, то поздравляю. Вы получаете основную причину позади aggregate root
.
Совокупный корень инкапсулирует несколько классов. Вы можете управлять всей иерархией только через главный объект.