Je souhaite définir une classe de base qui définit une méthode principale qui instancie la classe et exécute une méthode. Il y a quelques problèmes cependant. Voici la classe de base:Héritage de la méthode principale
public abstract class Strategy
{
abstract void execute(SoccerRobot robot);
public static void main(String args)
{
Strategy s = new /*Not sure what to put here*/();
s.execute(new SoccerRobot())
}
}
Et voici un exemple classe dérivée:
public class UselessStrategy
{
void execute(SoccerRobot robot)
{
System.out.println("I'm useless")
}
}
Il définit d'une simple méthode execute, qui devrait être appelé dans une méthode principale lors de l'utilisation en tant que l'application principale . Cependant, pour ce faire, j'ai besoin d'instancier la classe dérivée à partir de la méthode principale de la classe de base. Ce qui ne semble pas possible. Je préférerais ne pas avoir à répéter la méthode principale pour chaque classe dérivée, car elle semble quelque peu déséquilibrée.
Existe-t-il une bonne façon de procéder?
Votre conception semble un peu en arrière. Cela n'aurait-il pas plus de sens d'instancier un 'SoccerRobot' avec une stratégie particulière? –
SoccerRobot représente les propriétés physiques du robot, pas l'application elle-même. Il fournit un contrôle de haut niveau du robot (navigateTo, getBallAngle, etc.). Donc, je ne pense pas que cela devrait tenir la stratégie. – Eric