Дизайн, управляемый доменами - как должны быть организованы слои?

Я новичок в разработке программного обеспечения. Я считаю, что многоуровневая архитектура - отличный способ уменьшить сложности, возникающие в процессе объектно-ориентированной разработки программного обеспечения, и, не говоря уже о том, чтобы ваш код был организован.

Мне интересно узнать о подходе к проектированию, основанному на домене, и я столкнулся с некоторыми проблемами, чтобы познакомиться с ним (конечно же, на начальном уровне).
Вот оно -

Я хочу создать приложение для сохранения данных о людях в базе данных и отображения сведений о людях в 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, архитектура (простейшая его версия) должна быть следующей (пожалуйста, поправьте меня, если я ошибаюсь) -
enter image description here

Примечание:

  1. Я хочу, чтобы DataGrid был привязан к некоторой ObservableCollection , чтобы мгновенно отражать любые изменения.

  2. Это приложение WPF, но не обязательно в шаблоне MVVM, и я намеренно хочу использовать код, лежащий в основе.

Мои вопросы:

  1. Какие коды принадлежат прикладному уровню ?

  2. Я предполагаю, что я определенно не должен связывать ObservableColletion моего объекта домена (то есть Person ) как ItmsSource из DataGrid . Какой тип объекта мне следует извлечь из объекта домена и как?

  3. Чтобы сохранить развязку между уровнем представления и уровнем домена , вероятно, существует соглашение вроде никогда не создавать экземпляры объектов домена непосредственно на уровне представления . Каковы же тогда непрямые подходы?

  4. Если код программной части взаимодействует с уровнем приложения , то должен ли уровень приложения взаимодействовать с хранилищем данных ? Но что, если требуется какой-то доступ к домену, который не связан с доступом к данным (может быть, не в этом приложении, но может возникнуть, верно?) В этом сценарии, кто это X ] парень (подуровень / модуль) в уровне домена , с которым должен разговаривать уровень приложения ?

Я знаю, что мои вопросы относятся к очень любительскому уровню, но это вопросы действительно, возникла из-за проблем, с которыми я столкнулся, чтобы получить ясную картину. Итак, если у кого-то есть время, мы будем благодарны за любой ответ.

EDIT: I ' m не уверен, что хранилище данных должно иметь ссылку на модель домена .

35
задан atiyar 18 November 2019 в 00:19
поделиться