Я уверен на 80%, что мне не следует задавать этот вопрос, потому что он может показаться отрицательным, и я не имею в виду неуважение к кому-либо, особенно к автору этой книги. Я видел несколько постов, рекомендующих эту книгу и ее компаньона проект . Я не читал книгу, но сегодня я потратил несколько часов на изучение проекта. И хотя это выглядит очень полным, мне очень тяжело с тем, сколько деталей разных вещей разбросано вокруг. В своих собственных проектах я борюсь с тем, сколько мне нужно изменить, если сущность изменится, и этот проект не делает меня очень удобным как решение.
Например, есть объект Employee, который наследуется от Person. У Person есть конструктор с именем, фамилией и т. Д. И, следовательно, с Employee. Приватные сотруднику являются члены для имени, фамилии, а также общедоступные свойства для того же.
Существует EmployeeFactory, которая знает как о свойствах Employee, так и Person, а также об именах столбцов SQL (для извлечения значений из читателя).
Существует EmployeeRepository с нереализованными методами PersistNewItem и PersistUpdatedItem, которые, я подозреваю, в случае их реализации создадут SQL для операторов INSERT и UPDATE, как я вижу в CompanyRepository. Они записывают свойства в строки для построения SQL.
Существует PersonContract «Контракта с данными» с теми же частными членами и общими свойствами, что и Person, и EmployeeContract, который наследуется от PersonContract, как Employee с Person, с открытыми свойствами, отражающими сущности.
Существует статический класс 'Converter' со статическими методами, которые отображают сущности в контракты, включая
EmployeeContract ToEmployeeContract(Employee employee)
, который копирует поля из одного в другое, включая поля Персона. Может быть метод-компаньон, который идет другим путем - не уверен.
Я думаю, что есть и модульные тесты.
Всего я насчитываю 5-10 классов, методов и конструкторов с подробными знаниями о свойствах сущностей. Возможно, они генерируются автоматически - не уверен. Если бы мне нужно было добавить «Приветствие» или другое свойство в Person, мне пришлось бы настроить все эти классы / методы? Я уверен, что что-то забуду.
Опять же, я имею в виду неуважение, и это, кажется, очень подробный, подробный пример для книги. Это как DDD делается?