Зведений корінь - це складна назва простої ідеї.
Загальна ідея
Добре розроблена схема класу інкапсулює її внутрішні місця. Точка, через яку ви отримуєте доступ до цієї структури, називається aggregate root
.
Внутрішнє рішення вашого рішення може бути дуже складним, але користувач цієї ієрархії просто використовуватиме root.doSomethingWhichHasBusinessMeaning()
.
Приклад
Перевірте цю просту ієрархію класів
Як ти хочеш їздити на своєму автомобілі? Вибирали краще api
Варіант A (він просто якось працює):
car.ride();
Варіант B (користувач має доступ до інернацій класу):
if(car.getTires().getUsageLevel()< Car.ACCEPTABLE_TIRE_USAGE)
for (Wheel w: car:getWheels()){
w.spin();
}
}
Якщо ви вважаєте, що варіант А краще, то вітайте. Ви отримуєте головну причину позаду aggregate root
.
Сукупний корінь інкапсулює декілька класів. ви можете маніпулювати цілою ієрархією лише через основний об'єкт.