Szukam sposobu łatwego instancjonowania oraz rozszerzania implementacji danego API.
Założenie jest takie: jest sobie moduł który używa ustalonego API. Teraz chciałbym mieć możliwość jak najbardziej bezinwazyjnego dodawania nowych implementacji tego API tak aby nie ingerować w kod modułu który go używa. Moduł wie na podstawie requestu której implementacji użyć.
Wymyśliłem coś takiego:
Każda nowa implementacja będzie implementowć API w osobnym jarze. Jary będą podpięte do modułu jako dependencje. I teraz moduł refleksją będzie instancjonować konkretną implentację
np. Class.forName(className).newInstance()
Pełne nazwy klas będą zdefiniowane w zmiennych środowiska:
reuestType1 = com.xyz.className1
requestType2 = com.xyz.className2
requestType3 = com.xyz.className3
Jakie widzicie sposoby rozwiązania tego inaczej ?