Aggregate Root — сутність яка пов'язує граф об'єктів.
Властивості
- Гарантує цілісність даних, що входять до графа системи.
- Відповідає за збереження/оновлення/видалення усього графа об'єктів.
- Доступ до об'єктів графа можливий лише через кореневу сутність.
- Агрегат не може містити посилання на інший агрегат, лише на його ідентифікатор.
Приклад
Для того щоб було легше розпізнати клас як Aggregate Root можна додати маркер інтерфейс аби винести спільну логіку (наприклад, забезпечення консистентності даних) в абстрактний клас.
public interface IAggregateRoot { } public abstract class AggregateRoot { protected abstract bool Validate(); public bool CanBeSaved() => Validate(); }
Сутність комп'ютер є цілісною лише в тому випадку, якщо вона містить відповідне обладнання та програмне забезпечення:
public class Computer : IEntity, IAggregateRoot { public string Name { get; set; } public Hardware Hardware { get; set; } public Software Software { get; set; } } public class Hardware : IEntity { } public class Software : IValueObject { }
Часто використовується, як обмеження для сховищ збереження даних:
public interface IRepository<T> where T : IAggregateRoot { }
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Aggregate Root sutnist yaka pov yazuye graf ob yektiv VlastivostiGarantuye cilisnist danih sho vhodyat do grafa sistemi Vidpovidaye za zberezhennya onovlennya vidalennya usogo grafa ob yektiv Dostup do ob yektiv grafa mozhlivij lishe cherez korenevu sutnist Agregat ne mozhe mistiti posilannya na inshij agregat lishe na jogo identifikator PrikladDlya togo shob bulo legshe rozpiznati klas yak Aggregate Root mozhna dodati marker interfejs abi vinesti spilnu logiku napriklad zabezpechennya konsistentnosti danih v abstraktnij klas public interface IAggregateRoot public abstract class AggregateRoot protected abstract bool Validate public bool CanBeSaved gt Validate Sutnist komp yuter ye cilisnoyu lishe v tomu vipadku yaksho vona mistit vidpovidne obladnannya ta programne zabezpechennya public class Computer IEntity IAggregateRoot public string Name get set public Hardware Hardware get set public Software Software get set public class Hardware IEntity public class Software IValueObject Chasto vikoristovuyetsya yak obmezhennya dlya shovish zberezhennya danih public interface IRepository lt T gt where T IAggregateRoot Div takozhPredmetno oriyentovane proyektuvannya Shabloni proyektuvannya programnogo zabezpechennya Ob yektno oriyentovane programuvannya