Dynamiczne ładowanie klas a dziedziczenie

Dynamiczne ładowanie klas a dziedziczenie
  • Rejestracja: dni
  • Ostatnio: dni
0

Chciałbym w projekcie zastosować rozwiązanie, które nie wiem czy zadziała. Koncepcja jest taka:
W mojej aplikacji mam abstrakcyjną klasę Algorytm i obiekty Algorytm są używane do dosyć złożonych obliczeń. Nie wiem jeszcze jaka implementacja algorytmu będzie najlepsza. Dlatego chciałbym klasy dziedziczące po Algorytm ładować dynamicznie z zewnętrznego folderu wtedy - jeśli je tam umieszczę. Aplikację razem z podstawową implementacja algorytmu chcę spakować do jara, a lepsze implementacje algorytmu dopisywać później i ładować dynamicznie. Jednak muszą one dziedziczyć po Algorytm.

I tu moje pytania: jak zapewnić dziedziczenie, tzn. czy będę potrzebował jakiejś biblioteki z definicja klasy Alogytm? I czy po załadowaniu klasa zostanie rozpoznana poprawnie jako dziedzicząca po Algorytm? Czy przy uzyciu classloadera i refleksji będę mógł stworzyć obiekt takiej klasy i posługiwać się nim z zachowaniem pełnej funkcjonalności?

Takie rozwiązanie bardzo by mi odpowiadalo, ale nie wiem czy to jest w Javie. Proszę o poradę.

  • Rejestracja: dni
  • Ostatnio: dni
0

Nie starczą ci zwykłe funkcje wirtualne?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Tak. Mam parę programów, które działają na bardzo podobnej zasadzie. Prócz plików class warto też podmieniać jakiś plik tekstowy (xml?) opisujący pliki z algorytmami. Można wówczas w programie wyświetlać informacje o algorytmie, unika się też błędów wykonania, gdy do katalogu z algorytmami, ktoś wrzuci klasę zupełnie innego typu.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1

Takie coś to najłatwiej za pomocą OSGi zrobić. Względnie Spring Dynamic Modules.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.