Я пытаюсь охватить широко распространенную инъекцию зависимости/IoC. Поскольку я читаю все больше и больше о преимуществах, которые я, безусловно, могу им их оценить, однако я обеспокоен тем, что в некоторых случаях использование шаблона инъекций зависимости может привести к созданию гибкости за счет возможности ограничения риска путем инкапсуляции элементов управления на то, что система способна делать и какие ошибки я или другой программист проекта могут сделать. Я подозреваю, что у меня что-то отсутствует в шаблоне, который касается моих проблем, и я надеюсь, что кто-то сможет это указать.Влияет ли инъекция зависимости, мой риск сделать что-то глупое?
Вот упрощенный пример того, что касается меня. Предположим, у меня есть метод NotifyAdmins в классе Notification, и я использую этот метод для распространения очень чувствительной информации для пользователей, которые были определены как администраторы в приложении. Информация может быть распространена по факсу, электронной почте, чату и т. Д. На основе пользовательских настроек. Этот метод должен получить список администраторов. Исторически я бы инкапсулировал создание набора администраторов в методе вызовом класса AdminSet или вызовом класса UserSet, который запрашивает набор пользовательских объектов, которые являются администраторами, или даже посредством прямого вызова (-ов) база данных. Затем я могу вызвать метод Notification.NotifyAdmins, не опасаясь случайной отправки конфиденциальной информации не-администраторам.
Я считаю, что инъекции зависимостей требуют, чтобы я взял список администраторов в качестве параметра (в той или иной форме). Это облегчает тестирование, однако, что мешает мне совершить глупую ошибку при вызове кода и передаче в составе NonAdmins? Если я не буду вводить набор, я могу случайно послать неверным людям неправильные ошибки в одном или двух фиксированных местах. Если я делаю инъекцию набора, я не подвергаюсь этой ошибке всюду, я вызываю метод и вводя набор администраторов? Я делаю что-то неправильно? Существуют ли средства в рамках IoC, которые позволяют вам указывать эти ограничения, но все же использовать инъекции зависимостей?
Спасибо.
Нет, но посещение stackoverflow.com делает :-) – bmargulies