альтернативы внедрения зависимостей - PullRequest
14 голосов
/ 11 декабря 2008

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

public class BusinessProducts
{
   IDataContext _dx;

   BusinessProducts(IDataContext dx)
   {
      _dx = dx;
   }

   public List<Product> GetProducts()
   {
    return dx.GetProducts();
   }
}

Проблема в том, что я не хочу писать

BusinessProducts bp = new BusinessProducts(dataContextImplementation);

Я бы продолжил писать

BusinessProducts bp = new BusinessProducts();

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

Существуют ли какие-либо альтернативы этому подходу, поскольку я хотел бы сохранить свой исходный синтаксис для создания объектов, но я хотел бы по-прежнему иметь возможность имитировать зависимости при модульном тестировании, или это могут сделать для меня эти структуры внедрения зависимостей?

Я пишу на c #, но приветствуются альтернативы из других языков

Ответы [ 11 ]

0 голосов
/ 11 декабря 2008

Вы также можете посмотреть Виндзор для IoC.

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