Как создать объект бизнес-уровня с помощью внедрения зависимостей? - PullRequest
4 голосов
/ 03 февраля 2012

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

У меня есть несколько различных распространенных типов моделей, которые я использую в своем приложении ...картографы, объекты данных и объекты значений.Например, UserMapper берет объект UserData и собирает информацию из базы данных, а затем отображает его в объект UserValue для использования в контроллере.

Это означает, что эти модели имеют следующие зависимости:

  1. UserMapper: нужны UserData и способ построения UserValue (s)
  2. UserData: нужны Db (из фреймворка)
  3. UserValue: ничего не нужно

Включаю ли я в методы DIC моей инфраструктуры для создания объектов Mapper, объекта Data и объектов Value, чтобы зависимости можно было автоматически вводить?Или я создаю отдельный DIC / Factory для обработки содержимого бизнес-уровня?

1 Ответ

0 голосов
/ 03 февраля 2012

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

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

Вы могли бы написать таким образом, что ваш datamapper получает пустой объект пользовательского значения, а затем инициализирует данные объекта на основе данных БД. Альтернативой является создание тесной связи между вашими datamapper и классами пользовательских значений, когда один создает другой самостоятельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...