В java Я хочу реализовать прокси-класс (Proxy Factory Bean), который будет принимать несколько целей (реализуя один и тот же интерфейс) и вызывать одно из значений конфигурации на основе целевого метода.
Собака и кошка, реализующая Animal и на основе некоторого значения конфигурации (Y или N) хотят вызвать одну из его реализаций. Это может быть сделано с использованием стратегии, но моя проблема в том, что аналогичные logi c необходимо применять для других реализаций, которые реализуют разные интерфейсы. (Пример ниже я добавил ниже классов Audi и Benz, реализующих автомобильный интерфейс) и хочу выбрать реализации на основе в конфигурации.
public interface Animal
{
public void sound();
}
public class Dog implements Animal
{
public void sound()
{
System.out.print("bark");
}
}
public class Cat implements Animal
{
public void sound()
{
System.out.print("Meow");
}
}
2-й компонент:
public interface Car
{
public void make();
}
public class Audi implements Car
{
public void make()
{
System.out.print("Audi");
}
}
public class Benz implements Car
{
public void make()
{
System.out.print("Mercedes");
}
}
пример конфигурации пружины
<bean id "animalService" class="proxyFactoryBean">
<list>
<target id"Y". "class"="com.Dog">
<target id"N". "class"="com.Cat">
<list>
</bean>
<bean id "carService" class="proxyFactoryBean">
<list>
<target id"Y". "class"="com.Audi">
<target id"N". "class"="com.Benz">
<list>
</bean>
и в контроллере вводить один и тот же интерфейс (автомобиль, животное) и вызывать оригинальный метод без какой-либо прокси-инъекции.
Может кто-нибудь подсказать, как это можно сделать либо с SpringProxyFactoryBean, либо с пользовательской реализацией?
В основном в прокси-классе, я хочу проверить значение конфигурации и в зависимости от того, что я хочу вызвать метод для этого конкретного объекта реализации.
Если значение конфигурации равно Y, из списка определенных целей получить ссылку на компонент E в прокси и вызвать метод для него.