Что вы ищете в зависимости, чтобы определить, должна ли она быть внедренной зависимостью?

Мне трудно понять, когда следует внедрить зависимость. Давайте рассмотрим простой пример из моего проекта:

class CompanyDetailProvider : ICompanyDetailProvider {
    private readonly FilePathProvider provider;
    public CompanyDetailProvider(FilePathProvider provider) {
        this.provider = provider;
    }

    public IEnumerable<CompanyDetail> GetCompanyDetailsForDate(DateTime date) {
        string path = this.provider.GetCompanyDetailFilePathForDate(date);
        var factory = new DataReaderFactory();
        Func<IDataReader> sourceProvider = () => factory.CreateReader(
            DataFileType.FlatFile, 
            path
        );
        var hydrator = new Hydrator<CompanyDetail>(sourceProvider);
        return hydrator;
    }
}

(Не качество продукции!)

ICompanyDetailProvider отвечает за предоставление экземпляров CompanyDetail для потребителей. Конкретная реализация CompanyDetailProvider делает это путем гидратации экземпляров CompanyDetail из файла с помощью Hydrator , который использует отражение для заполнения экземпляров T получен из IDataReader . Очевидно, что CompanyDetailProvider зависит от DataReaderFactory (который возвращает экземпляры OleDbDataReader с указанием пути к файлу) и Hydrator . Следует ли вводить эти зависимости? Правильно ли вводить FilePathProvider ? Какие качества я проверяю, чтобы решить, следует ли им делать инъекции?

6
задан Cray Zee 10 September 2010 в 15:05
поделиться