Notes de police

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 ...}
  • 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 (); }}}
  • un client francophone
Classe publique Classfra {// Interface qui permet d'interpréter l'ordre d'être interprété en dehors de cette commande de camérailingue privée de classe; Faigné booléen privé; // Exemple de variable // Constructeur Classe publique (Carameromultilingue P) {Commande = P; } Processus annulés () {Hunger = vrai; Si (faim) {System.out.println ("Bonjour, un café S'il Vous Plaît?"); Ordre.pedrocédrafe (); }}}
  • un client anglophone
  •  
    classement de classe publique {// interface qui permet d'interpréter l'ordre d'être interprété en dehors de cette commande de camarématilingue privée; Faigné booléen privé; // Exemple de variable // Constructeur Classement public (Camareromultilingue P) {Commande = P; } Processus annulés () {Hunger = vrai; Si (faim) {system.out.println ("bonjour, puis-je avoir un café s'il vous plaît?"); Ordre.pedrocédrafe (); }}}
  • un serveur

    un serveur

     
    classe publique Restaurant {Public Static Void Main (String Args) {Classe Mozo implémente Camaremultilingue {Gestion des paiements annulés du public () {System.out. System.out.println (""); }} // Notez que l'interface est publique car vous devez le savoir // toutes les classes qui la contiennent comme une propriété // mais! Les classes qui mettent en œuvre peuvent être privées, internes, etc. // chacune pouvant être implémentées et la mise en œuvre que vous souhaitez // à condition que vous respections les méthodes et les champs minimaux proposés par l'interface. Sera mozointerprete = nouveau mozo (); // clients, lors de la saisie de la barre, vous recevez un interprète intelligent (dans ce cas de la même manière) CE CLAS = Nouvelle classe (Mozointerprete); Classfra cf = Nouveau Classfra (Mozointerprete); Classing CI = nouveau classement (Mozointerprete); //action! La demande de clients CE.Process () est traitée; cf.proces (); CI.Procéder (); }}

    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!

    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.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *