Solution ex8

Voici comment écrire le code de la méthode execute() de la classe Command qui appelle la méthode abstraite doExecute() de l’objet instancié et renvoie le résultat de cette dernière, et rendre impossible qu’au moment de la compilation un descendant de classe Command puisse définir sa propre méthode execute() :

abstract class Command {
  abstract public function doExecute();

  final public function execute() {
    return $this->doExecute();
  }
}

La classe Command est déclarée comme "abstraite" grâce à l’instruction abstract, ce qui signifie qu’elle ne peut pas être instanciée directement. Elle contient une méthode abstraite nommée doExecute() qui doit être définie par les descendants de la classe.

La méthode execute() de la classe Command appelle la méthode abstraite doExecute() et renvoie le résultat de cette dernière. Elle est déclarée comme "finale" grâce à l’instruction final, ce qui signifie qu’elle ne peut pas être surchargée (redéfinie) par les descendants de la classe.

Pour utiliser cette classe, vous devez définir une classe qui en hérite et qui implémente la méthode abstraite doExecute() :

class ConcreteCommand extends Command {
  public function doExecute() {
    // Code de la méthode doExecute()
  }
}

Vous pouvez ensuite instancier cette classe et appeler la méthode execute() :

$command = new ConcreteCommand();
echo $command->execute();

Be the first to comment

Leave a Reply

Your email address will not be published.




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.