Zastąp implementację klasy instancji bez dotykania kodu (java)
Mam starszy kod, którego nie chcę dotykać.
public class LegacyCode{
public LegacyCode() {
Service s = new ClassA();
s.getMessage();
}
}
GdzieClassA
zapewnia zgłoszenie serwisowe CORBA.
public class ClassA implements Service{
@Override
public String getMessage() {
// Make CORBA service call...
return "Class A";
}
}
I interfejsService
wygląda jak;
public interface Service {
String getMessage();
}
Dla celów testowych chcę zastąpić implementacjęService
(wLegacyCode
wprowadzony przezClassA
) z odgałęzieniem.
public class ClassB implements Service {
@Override
public String getMessage() {
return "Stub Class B";
}
}
Jak na razie dobrze. Ale czy możliwe jest ładowanie bez żadnych modyfikacji pokazanego wcześniej koduClassB
zamiastClassA
w instancjiClassA
?
// In my test workbench
new LegacyCode(); // "Stub Class B"
Próbowałem napisać niestandardowy program ładujący klasy i załadować go przy starcie aplikacji za pomocą argumentów java vm, ale tylko pierwszej klasy (tutajLegacyCode
) został załadowany przez ten program ładujący.
Z góry dziękuję