Считается ли плохой практикой первостепенная зависимость от продюсеров? - PullRequest
0 голосов
/ 24 февраля 2019

Я переопределяю что-то вроде Python Dependency Injector на языке программирования D.Я хочу построить чистую среду внедрения зависимостей для D.

Является ли переопределение поставщиков считается плохой практикой?Кажется, что переопределение провайдеров явно является нелокальной зависимостью, а нелокальные зависимости обычно считаются плохой практикой по теории ООП.

Так я должен или не должен реализовывать переопределение провайдеров в моей чистой инфраструктуре внедрения зависимостей для D?

1 Ответ

0 голосов
/ 25 февраля 2019

Прежде всего, в D. нет стандартной поддержки DI. Под стандартным я имею в виду - инфраструктура DI не является частью стандартной библиотеки D.Поэтому все зависит от вас, как вы это реализуете.Я только кратко просканировал проект Python Dependency Injector, о котором вы упомянули, и кроме некоторых специфических для Python вещей, я не вижу причин, почему хорошая DI-инфраструктура, реализованная в D, не может быть сделана таким же образом.Название «провайдера» напоминает мне о том, как работает Java SPI, и это то, что мы (я также являюсь разработчиком на Java) используем десятилетиями, и это доказывает, что это хороший подход.

Ваш вопрос сбивает с толкунемного потому, что переопределение имеет особое значение в D. По моему скромному мнению, пользователи вашей структуры DI должны иметь возможность подключать другого, но совместимого поставщика, если эти поставщики предоставляют объекты одного типа.(реализуйте некоторый интерфейс, который нужен вашему классу).

Я уже говорил выше, что в стандартной библиотеке нет стандартной структуры DI, но стоит сказать, что существуют структуры DI для D, выполненные другими членами Dсообщества.Одним из них является превосходный (Spring-like) каркас Poodinis: https://github.com/mbierlee/poodinis.Посмотрите и посмотрите, соответствует ли он вашим потребностям.

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