Предпочтительнее встраивать зависимости в интерфейсы или разрешать эту работу конкретным классам? - PullRequest
0 голосов
/ 03 ноября 2010

Вот вопрос, с которым мне часто приходится сталкиваться при разработке моих маленьких приложений. Есть ли причина, по которой я бы предпочел

alt text

над

alt text

Если да, то почему? Если нет, то существуют ли какие-либо конкретные обстоятельства, в которых есть явное преимущество одного подхода перед другим?

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

Спасибо!

1 Ответ

3 голосов
/ 03 ноября 2010

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

В общем, я бы сказал, что если зависимость - это деталь реализации, то она должна быть передана конструкторуконкретной реализации.Если параметр присущ самому определению / характеру вычислений, то лучше передать параметр.Другая ситуация, когда рекомендуется передать параметр в интерфейсе, - это мутация;для повторного входа лучше передать параметр, который вы изменяете, вместо изменения состояния реализации, поэтому, если ожидаются какие-либо побочные эффекты, я бы рекомендовал передать объект, который будет мутирован.Кроме того, я согласен с вашей точкой зрения.

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