Я новичок в разработке программного обеспечения. Я считаю, что многоуровневая архитектура - отличный способ уменьшить сложности, возникающие в процессе объектно-ориентированной разработки программного обеспечения, и, не говоря уже о том, чтобы ваш код был организован.
Мне интересно узнать о подходе к проектированию, основанному на домене, и я столкнулся с некоторыми проблемами, чтобы познакомиться с ним (конечно же, на начальном уровне).
Вот оно -
Я хочу создать приложение для сохранения данных о людях в базе данных и отображения сведений о людях в WPF DataGrid
(я знаю, DDD определенно не для приложений такого масштаба, но просто для простоты для такого любителя, как я). Итак, я создал доменный класс "Человек", что-то вроде -
public class Person
{
public Person(dataType paramA)
{
this.PropertyA = paramA;
}
private dataType _fieldA;
public dataType PropertyA
{
//encapsulates _fieldA
}
public dataType PropertyX
{
//some code that manipulates private field
}
private dataType MethodPQR(dataType param)
{
//some code
}
}
Теперь, согласно моему пониманию DDD, архитектура (простейшая его версия) должна быть следующей (пожалуйста, поправьте меня, если я ошибаюсь) -
Примечание:
Я хочу, чтобы DataGrid
был привязан к некоторой ObservableCollection
, чтобы мгновенно отражать любые изменения.
Это приложение WPF, но не обязательно в шаблоне MVVM, и я намеренно хочу использовать код, лежащий в основе.
Мои вопросы:
Какие коды принадлежат прикладному уровню
?
Я предполагаю, что я определенно не должен связывать ObservableColletion
моего объекта домена (то есть Person
) как ItmsSource
из DataGrid
. Какой тип объекта мне следует извлечь из объекта домена и как?
Чтобы сохранить развязку между уровнем представления
и уровнем домена
, вероятно, существует соглашение вроде никогда не создавать экземпляры объектов домена непосредственно на уровне представления
. Каковы же тогда непрямые
подходы?
Если код программной части взаимодействует с уровнем приложения
, то должен ли уровень приложения
взаимодействовать с хранилищем данных
? Но что, если требуется какой-то доступ к домену, который не связан с доступом к данным (может быть, не в этом приложении, но может возникнуть, верно?) В этом сценарии, кто это X
] парень (подуровень / модуль) в уровне домена
, с которым должен разговаривать уровень приложения
?
Я знаю, что мои вопросы относятся к очень любительскому уровню, но это вопросы действительно, возникла из-за проблем, с которыми я столкнулся, чтобы получить ясную картину. Итак, если у кого-то есть время, мы будем благодарны за любой ответ.
EDIT: I ' m не уверен, что хранилище данных
должно иметь ссылку на модель домена
.