Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Diagramme
Voici le diagramme des classes importantes que nous allons implémenter.
La Télécommande va jouer le rôle du client, les boutons jouent le rôle d'invoker, les ConcreteCommandes ConsoleOn et ConsoleOff vont éxécuter les méthodes nécessaires du receiver Console.
Première étape
On crée nos objets receiver :
- Console :
public class Console {
public void on(){
System.out.println("La console est allumée");
}
public void off(){
System.out.println("La console est éteinte");
}
public void startGame(){
System.out.println("Jeu lancé");
}
public void stopGame(){
System.out.println("Jeu arrêté");
}
}
- Radio :
public class Radio {
private int volume = 0;
public void on(){
System.out.println("La radio est allumée");
}
public void off(){
System.out.println("La radio est éteinte");
}
public void volumeUp(){
this.volume++;
System.out.println("Le volume est de : " + this.volume);
}
public void volumeDown(){
this.volume--;
System.out.println("Le volume est de : " + this.volume);
}
}
Deuxième étape
On crée l'interface Icommande qui sera implémentée pour chaque nouvelle commande
public interface Icommande {
public void execute();
public void undo();
}
Troisième étape
On va créer des commandes destinées à chaque objet
Commande permettant d'allumer la console :
public class Commande_ConsoleOn implements Icommande{
private Console console;
public Commande_ConsoleOn(Console theConsole) {
this.console = theConsole;
}
@Override
public void execute() {
this.console.on();
}
@Override
public void undo() {
this.console.off();
}
}
Commande permettant de monter le son de la radio
public class Commande_RadioVolumeUp implements Icommande{
private Radio radio;
public Commande_RadioVolumeUp(Radio theRadio) {
this.radio = theRadio;
}
@Override
public void execute() {
this.radio.volumeUp();
}
@Override
public void undo() {
this.radio.volumeDown();
}
}
Quatrième étape
Création de la télécommande
public class Telecommande {
private Icommande bouton1;
private Icommande bouton2;
private Icommande bouton3;
private Icommande bouton4;
public Telecommande(Icommande btn1, Icommande btn2, Icommande btn3, Icommande btn4){
this.bouton1 = btn1;
this.bouton2 = btn2;
this.bouton3 = btn3;
this.bouton4 = btn4;
}
public Telecommande(Icommande btn1, Icommande btn2){
this.bouton1 = btn1;
this.bouton2 = btn2;
}
public void pressBtn1(){
this.bouton1.execute();
}
public void pressBtn2(){
this.bouton2.execute();
}
public void pressBtn3(){
this.bouton3.execute();
}
public void pressBtn4(){
this.bouton4.execute();
}
}
Nous avons ici fait le choix d'utiliser une télécommande à 4 boutons, comme vous pouvez le remarquer, aucune commande n'a été implémentée pour les boutons, ces commandes seront implémentées directement lors de la création de celle-ci.