Un rappel est une référence à une action exécutable (pas l’action elle-même) qui est généralement transmise comme une dispute à une autre fonction. C’est comme si nous nous transmettions une télécommande et indiquez « ceci pour allumer les lumières »; Lorsque vous appuyez dessus, ce n’est peut-être pas comme ça, puisque nous n’avons aucune référence de la fonction. La Partie de code qui appelle à une action de rappel, à travers cette référence (qui a été transmise par exemple en tant qu’argument), l’exécute «de confiance» à qui l’argument s’est produit.
Exemple d’un serveur
Supposons les clients d’un restaurant international , qui rend les commandes à un serveur, dans différentes langues. Nous avons besoin que ces commandes arrivent traduites dans le cuisinier.
Le serveur rend ces commissions au cuisinier, toujours en espagnol.
--- - - \ |. - > --- > | ------ /
retour à la télécommande, supposons que vous donniez des clients une télécommande avec un bouton (une référence), et ils appuient dessus quand ils veulent par exemple du café, Mais comme nous étions ceux qui lui ont donné le clavier, l’effet pourrait être n’importe quoi, ils ne décident que lorsque vous appuyez dessus, mais c’est le restaurant qui contrôle quelle action est derrière. C’est le devoir indirect qu’ils ont Les clients doivent « placer la commande au cuisinier », ils tiraient une action à travers le serveur, ils ont confiance que le serveur saura faire quoi faire (comme il serait de faire confiance au bouton), par conséquent, lorsque les clients passent la commande (dans n’importe quelle langue) En fait, une action équivalente est exécutée pour rendre la commande au cuisinier (mais dans la seule langue que vous comprenne).
Dans cet exemple, un moyen de le faire en Java.
- Une interface pour définir le format de rappel (fonctionnalités de la télécommande, le marié multilingue)
- cours qui acceptent comme argument le rappel (clients qui font confiance au restaurant)
- sourire de classe qui implémente l’interface (définit quoi faire chaque fois le rappel)
- interface
Elevage d'interface publiqueOMultilingue {Café adecal adecal public (); // peut être beaucoup plus de méthodes ...}
pré>- un client hispanophone
class de classe publique {// interface qui permet d'interpréter la commande à l'extérieur de cette commande de camérailingue privée de classe; Faigné booléen privé; // exemple variable // constructeur public classp (carameromultilingue p) {Commande = P; } Processus annulés () {Hunger = vrai; If (faim) {system.out.println ("bonjour, un café s'il vous plaît"); Ordre.pedrocédrafe (); }}}
pré>- un client francophone
- un client anglophone
un serveur
Sortie
Bonne journée, un café s'il vous plaît, le serveur demande au chef: Un java! Bonjour, puis-je avoir un café s'il vous plaît?Le serveur demande au cuisinier: un java! Bonjour! Bonjour, un café S'Le Plaît? Le serveur demande au cuisinier: un java! pré>
est là autre moyen de faire il? Oui, une autre forme utilise une classe abstraite, cette classe implémente certaines méthodes, mais d'autres peuvent les laisser "vides" afin que certaines classes l'étendent et peuvent les mettre en œuvre, de les définir, de les définir encore une autre façon de faire du rappel, car le résumé La classe peut appeler les méthodes à chaque fois que vous en avez besoin (selon certaines fonctions attendues), et que le contenu de ces méthodes (ce que fait vraiment) est défini à l'extérieur, dans la classe qui l'étend.
- un client hispanophone