Я уже некоторое время практикую DDD с 4-мя различными слоями: доменом, презентацией, приложением и инфраструктурой. Недавно я представил моего друга в концепцию DDD, и он подумал, что он ввел ненужный уровень сложности (в частности, ориентированные интерфейсы и IoC). Обычно, на этом этапе, я объясняю преимущества DDD - особенно, его модульность. Весь тяжелый подъем и под капотом находится в Инфраструктуре, и если бы я хотел полностью изменить базовый метод доступа к данным, я мог бы сделать это, только касаясь репозитория уровня инфраструктуры.DDD vs Архитектура N-Tier (3 уровня)
аргумент моего друга, что он мог бы построить трехуровневый приложение таким же образом:
- Бизнес
- данных
- Презентация
Он будет создавать бизнес-модели (например, домен модели), а репозитории в слое данных возвращают эти бизнес-модели. Затем он назвал бы бизнес-уровень, называемый слоем данных. Я сказал ему, что проблема с этим подходом заключается в том, что он не поддается тестированию. Конечно, вы можете написать интеграционные тесты, но вы не можете писать настоящие модульные тесты. Можете ли вы увидеть какие-либо другие проблемы с его предложенным трехуровневым подходом (я знаю, что есть, потому что почему DDD существует иначе?).
EDIT: Он не использует IoC. Каждый слой в его примере зависит друг от друга.
Домен-дизайн и многоуровневая архитектура действительно не имеют отношения к вашему спору (и, как я их понимаю, они ортогональны друг другу). Если вы очистите акронимы, что вы действительно не согласны? Кодирование интерфейсов и инъекции зависимостей? –
@Jeff Sternal: Хммм ... хорошая точка. –