Контейнеры МОК и доменный управляемый дизайн

Красные Черные Деревья и B-деревья используются во всех видах персистентного устройства хранения данных; потому что деревья сбалансированы, производительность обходов ширины и глубины смягчена.

Почти все современные системы баз данных используют деревья для хранения данных.

15
задан Bassel Shmali 3 October 2017 в 08:01
поделиться

3 ответа

На мой взгляд, он прав в том, что не использует контейнер IoC в модели предметной области. Этой практике я следую и сам. Основная идея состоит в том, что сервисы могут содержать зависимости инфраструктуры, и поэтому целесообразно имитировать их. У объектов домена их нет, поэтому не важно их моделировать (все же кодирование интерфейсов - хорошая практика).

Фабрики для сущностей домена не должны находиться в контейнере IoC, но фабрики для сервисов должны. Обычно вы можете ссылаться на фабрики сущностей в своих сервисах. Это не очень тесная связь.

Хорошее чтение об IoC можно найти в сообщении блога Билли Маккафферти «Внедрение зависимостей 101»

3
ответ дан 1 December 2019 в 05:31
поделиться

Контейнеры IOC неоценимы при разработке кода для модульного тестирования и ортогональны DDD. Вы могли бы создать свою собственную реализацию шаблонов фабрики и компоновщика, если хотите ... зачем испытывать трудности?

Абсолютно. Используйте контейнер IOC, достаточно мощный, чтобы удовлетворить ваши конкретные требования; не больше, не меньше.

0
ответ дан 1 December 2019 в 05:31
поделиться

Мы используем DDD и внедрение зависимостей (шаблон), но не используем структуру внедрения зависимостей.

Одна проблема с популярными структурами внедрения зависимостей заключается в том, как они разделяют конфигурацию на файлы XML. XML - отличный язык разметки. Как он стал языком конфигурации, я никогда не пойму. Проблема, конечно, в том, что вам нужно запустить приложение, прежде чем вы узнаете, все ли подключено правильно. Также трудно понять, какой код и где используется. Если вы используете интерфейсы, то единственная ссылка на реализацию будет в файле XML, который труднее обнаружить. И, наконец, вы теряете безопасность типов и дженерики. (Однажды я увидел ужасную ошибку в продакшене, которая была бы обнаружена компилятором, если бы мы не использовали XML. )

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

В моих последних двух проектах мы удалили большие объемы «кода» из XML-файлов на фабрики. Фабрики связаны с сервисами, управляемыми контейнером (такими как соединения JDBC, соединения JMS и т. Д.). Приложение стало намного проще для понимания, поскольку фабрика менее многословна, чем XML. Программисту на Java гораздо проще связать программу, используя пространство управления, а не тиддлинг XML - и ваша IDE будет выделять, когда вы что-то сломали.

В интеграционном тесте просто создавайте объекты, как вы будет на заводе.

т.е.

dbConnection = DatabaseConnectionFactory.connection();    
serviceUnderTest = new PaymentProcessor(new CustomerRepository(connection));
-1
ответ дан 1 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: