Важно помнить, что, как и большинство идей о разработке программного обеспечения, DDD - это набор руководящих принципов, а не жестких и быстрых правил, поэтому не стоит слишком сильно беспокоиться о том, является ли то, что вы делаете, настоящим DDD. Как и большинство программных сценариев, ответ таков: «Это зависит».
В этом сценарии рассмотрите возможность использования Спецификации .
Category category; // some category you're working with.
ICategoryRepository _categoryRepository; // some repository.
ISpecification readyForRemoval = new ReadyForRemovalSpecification();
if (readyForRemoval.IsSatisfiedBy(category)
{
_categoryRepository.Remove(category);
}
public class ReadyForRemovalSpecification : ISpecification<Category>
{
public bool IsSatisfiedBy(Category category)
{
return (category.HasProducts == false);
// return category.Products.Count = 0; // whatever...
}
}