Aggregate RootAggregate 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
{
}
Див. також |