Несколько Шаблон декоратора в Castle-Windsor

Мы находимся в процессе редизайна некоторых устаревших программ, чтобы сделать их более тестируемыми, и решили использовать Dependency-Injection и Castle.Windsor, чтобы помочь нам.

Во-первых, наша цель: * Ряд декораторов, которые работают с потоком данных. * Возможны множественные комбинации декораторов и корневые узлы в каждом случае могут потребоваться для получения данных из разных мест.

Технически наш проект выглядит следующим образом:

interface IUpdateableValue<T> 
{
  T Get();
};

У нас есть, например. три набора данных, которые должны быть извлечены с помощью ряда компонентов, все из которых реализуют IUpdateableValue() (псевдокод):

JsonParser(
    Decompressor(
        Decrypter(decryptionKey
            FileCache(filename, 
                HttpWebDownloader(url))))

XmlParser(
    Decompressor(
        Decrypter(decryptionKey2
            FileCache(filename2, 
                HttpWebDownloader(url2))))

У меня возникли проблемы с разработкой дизайна, чтобы вписаться в структуру DI, такую ​​​​как Castle-Windsor. Я подозреваю, что некоторые из них могут быть обработаны именованными экземплярами, но это кажется вонючим для этого использования.

Идея состоит в том, что «пользователь», например, экземпляры JsonParser и XmlParser не знают (или не заботятся), поступают ли данные из HttpUrl, файла или волшебным образом извлечены из шляпы.

Я думаю, что в нашем дизайне что-то не так, но не знаю, как это исправить.

Есть идеи, как развиваться дальше?

13
задан Steven 25 May 2012 в 17:07
поделиться