Я собираю новую систему, и я хотел бы иметь для нее богатый домен. Тем не менее, я застрял на небольшой детали, о которой я хочу узнать больше.Разработка домена Driven Design - где мы должны размещать репозитории?
Предположим, у меня будет класс Customer, где вы на самом деле сохраняете объект клиента или агрегированный корень?
Должен ли он быть классом клиента, обладающим знаниями о настойчивости?
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
myCustomer.Save()
в этом случае мне нужно будет передать мое хранилище клиентов в класс клиента (либо через завод или какой-либо инъекции). Заметьте, что я не смог найти хороший пример этого в книге DDD Эрика Эвенса.
Другой способ держит клиента бесплатно знать о настойчивости
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
CustomerRepository repository = new CustomerRepository();
repository.Save(myCustomer);
Кроме того, я полагаю, я могу иметь класс обслуживания, что делает все это вместе, как это:
AddCustomerService service = new AddCustomerService(CustomerRepository repository)
service.AddCustomer(myCustomer);
просто записочку : Если я действительно не сохраняю в классе клиента, я считаю, что мой класс клиента - это ничего, кроме свойств, возможно, с небольшой проверкой, но не более того. Никакого реального поведения нет. Поведение переносится либо на класс обслуживания, либо на репозитарии, используемые клиентом ...
Да. Я знаю. Но у вашего объекта домена есть ссылка на ваши репозитории? – user80855
Нет. Нет ссылки на репозитории в моем проекте объектов домена. – Greg
Спасибо. Я думаю, что это путь. – user80855