passero
Legacy Member
Het is 2 jaar geleden dat ik nog wat java gedaan heb maar kheb er plots weer zin in en heb een oud projectje van onder het stof gehaald en ben dit beetje aan het aanpassen. Betere design, beter ontwerp,...
Een van de zaken die ik zou willen aanpassen is het dynamisch maken van functies. Het is een programma waar de gebruiker functies kan aanroepen vanuit een commandbox. Die functies staan gedefinieerd in een XML waar ook het aantal parameters, help enzo staan gedefinieerd.
Momenteel staat het uitvoeren van zo een methode in een structuur zoals hieronder:
parameters is een ArrayList die de parameters bijhoudt voor het uitvoeren van de methode die parameters verwacht.
Het spreekt voor zich dat wanneer ik een functie toevoeg aan de XML en aan de klasse, ik ook die if structuur moet aanpassen.
Ik zou dus een systeem willen waarbij ik gemakkelijk nieuwe module's kan toevoegen adhv nieuwe XML files. Die xml files bevatten dan eigenlijk het pad naar de klasse en defenitie van de functie.
Ik zou dan ook eigenlijk het equivalent van de eval functie gebruiken in PHP maar dan in java zodat het dynamisch is, alleen weet ik niet direct hoe ik in java functies kan oproepen adhv een string
EDIT: na een beetje zoeken heb ik gemerkt dat dit dus niet echt mogelijk is in java en dat zo een structuur wijst op een designprobleemke... nu ja, dat dacht ik al.
IK heb ook even zitten zoeken en blijkbaar kunnnen het command en interpreter pattern mij hier wel wat helpen maar mss toch even jullie advies hoe ik dit best aanpak?
Een van de zaken die ik zou willen aanpassen is het dynamisch maken van functies. Het is een programma waar de gebruiker functies kan aanroepen vanuit een commandbox. Die functies staan gedefinieerd in een XML waar ook het aantal parameters, help enzo staan gedefinieerd.
Momenteel staat het uitvoeren van zo een methode in een structuur zoals hieronder:
Code:
if(methode.equals("exit"))
{
doeExit();
}
if(methode.equals("clear"))
{
doeClear();
}
if(methode.equals("doeIets"))
{
doeIets(parameters);
}
parameters is een ArrayList die de parameters bijhoudt voor het uitvoeren van de methode die parameters verwacht.
Het spreekt voor zich dat wanneer ik een functie toevoeg aan de XML en aan de klasse, ik ook die if structuur moet aanpassen.
Ik zou dus een systeem willen waarbij ik gemakkelijk nieuwe module's kan toevoegen adhv nieuwe XML files. Die xml files bevatten dan eigenlijk het pad naar de klasse en defenitie van de functie.
Ik zou dan ook eigenlijk het equivalent van de eval functie gebruiken in PHP maar dan in java zodat het dynamisch is, alleen weet ik niet direct hoe ik in java functies kan oproepen adhv een string
EDIT: na een beetje zoeken heb ik gemerkt dat dit dus niet echt mogelijk is in java en dat zo een structuur wijst op een designprobleemke... nu ja, dat dacht ik al.
IK heb ook even zitten zoeken en blijkbaar kunnnen het command en interpreter pattern mij hier wel wat helpen maar mss toch even jullie advies hoe ik dit best aanpak?
. En je moet de fully qualified classname gevens dus de volledige package informatie.