У меня есть библиотека только с интерфейсами и базовыми объектами, назовем ее API. API имеет несколько известных реализаций, число которых может увеличиться для нужд приложения. Приложение может использовать только одну реализацию за раз. У меня есть другая библиотека, давайте назовем ее PROXY, которая обеспечивает базовую реализацию библиотеки API, и она делегирует логику реальной реализации API. Реальная реализация обеспечивается конфигурацией, а библиотека PROXY заботится о создании соответствующих реальных классов и их обертывании. Идея состоит в том, чтобы использовать библиотеки API и PROXY в моем коде, чтобы я мог изменять реализации без перекомпиляции приложения - просто изменяя конфигурацию и предоставляя реальную библиотеку реализации в classpath. Вот пример кода в C #:
API:
public interface IFoo
{
void Bar();
}
PROXY:
public class Foo : IFoo
{
private IFoo _realFoo;
public Foo()
{
_realFoo = ...; // Assume reading the config and creating the real implementation with reflection here.
}
void Bar()
{
_realFoo.Bar();
}
}
Реальная реализация:
public class RealFoo : IFoo
{
void Bar()
{
// Some specific logic
}
}
Я предполагаю, что класс Foo выше использует Decorator Pattern
, чтобы обернуть реальную реализацию. Меня больше интересует, если у всего подхода есть конкретное имя?