Re: Библиотеки с одинаковыми интерфейсами
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 21.08.06 10:32
Оценка:
Здравствуйте, Степанов Алексей Александрович, Вы писали:

САА>Имеется несколько библиотек с идентичными интерфейсами.


САА>Требуется в зависимости от некоторых начальных условий

САА>использовать ту или иную библиотеку.

САА>Как бы сделать это наиболее прозрачно, т.е. без внесения

САА>в основной код, использующий эти интерфейсы, постоянных
САА>проверок условий и т.п.

Посмотрите в сторону паттерна AbstractFactory. К примеру:

public abstract class AsbtractComponentFactory
{
    public IComponentA CreateComponentA();
}

public class ConcreteComponentFactory
{
    public override IComponentA CreateComponentA()
    {
        return new ConcreteComponentA();
    }
}


То есть внутри конкретной фабрики вы можете создавать экземпляры классов конкретной библиотеки. В коде повсеместно для создания объектов используйте абстрактную фабрику и вы избежите проверок.

САА>Может стоит задуматься о рефлекшне? Но не появятся ли

САА>неоправданные, в данном случае, тормоза?

Вы можете при старте приложения создать активатором конкретную фабирку и закэшировать ее — в этом случае вопрос быстродействия не сильно пострадает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.