Note de font

Un apel invers este o referire la o acțiune executabilă (nu acțiunea însăși) care este de obicei adoptată ca argument pentru o altă funcție. Este ca și cum ne vom trece la telecomandă și indică faptul că „aceasta este de a lumina luminile”; Când îl apăsați, este posibil să nu fie așa, deoarece avem doar o referință a funcției. Codul care solicită acțiuni de apel invers, prin această referință (care, de exemplu, a fost adoptat ca argument), execută „încrederea” în cine sa întâmplat argumentul.
Exemplu de chelner
presupune clienții unui restaurant internațional , care fac comenzi unui chelner, în diferite limbi. Avem nevoie de faptul că aceste comenzi sosesc traduse în bucătar.

– – \ |. – > — iv id = „b0ca06a612”

| —– /
Revenind la telecomandă, să presupunem că ați oferi clienților o telecomandă cu un buton (o referință) și îl apasă atunci când doresc, de exemplu, cafea, Dar, după cum am fost cei care i-au dat tastatura, efectul ar putea fi orice, ele decid doar atunci când o presează, dar este restaurantul care controlează ce acțiune este în urmă. Aceasta este temele, este un mediu indirect pe care îl au Clienții să „pună ordinul în bucătărie”, au aruncat o acțiune prin chelner, au încredere că chelnerul va ști ce să facă (deoarece ar fi de încredere în buton), atunci când clienții plasează comanda (în orice limbă) De fapt, o acțiune echivalentă este executată pentru a face ordinea gătitului (dar în singura limbă pe care o înțelegeți).
În acest exemplu, o modalitate de ao face în Java.

  • O interfață pentru a defini formatul apelului (caracteristicile telecomenzii, mirele multilingve)
  • Clase care acceptă ca argument apel invers (clienții care au încredere în restaurant)
  • clasa zâmbet care implementează interfața (definește ce să facă de fiecare dată apel invers)

  • Interfață
      Interfață publică Breederomultiling {Public Vid Adecal Cafe (); // poate fi mai multe metode ...}  
  • Un client vorbitor de limba spaniolă div id = „84A4694EA7”

Clasa publică Classesp {// Interfața care permite ca ordinul să fie interpretat în afara acestei comenzi de cameră private private; Boolean privat foame; // exemplu variabil // constructor public clasa (carameromultilingue p) {comanda = p; } Procese Public VOD () {foame = true; Dacă (foame) {System.out.println ("Bună dimineața, o cafea vă rog"); Ordine.pedircafe (); }}}

  • Un client vorbitor de limbă engleză
      Clasa publică Classfra {// Interfață care permite ca ordinul să fie interpretat în afara acestei comenzi de cameră private private; Boolean privat foame; // exemplu variabilă // Clasa publică constructor (carameromultilinge p) {comandă = p; } Procese Public VOD () {foame = true; Dacă (foame) {System.out.println ("bonjour, o cafea plată de s'il vos?"); Ordine.pedircafe (); }}}  
  • un client vorbitor de limba engleză
     iv id = "C36FA06BEB" 
  • Clasa de clasă publică {// Interfață care permite ca ordinul să fie interpretat în afara acestei comenzi private de camaremultiling privat; Boolean privat foame; // exemplu variabilă // Clasa publică constructor (camareromultilinge p) {comanda = p; } Procese Public VOD () {foame = true; Dacă (foame) {System.out.println ("Bună dimineața, pot să am o cafea, vă rog?"); Ordine.pedircafe (); }}}

    un chelner

      Clasa publică Restaurant {Public Static Vid Principal (String Args) {CLASS Mozo implementează Camaremultilingual {Gestionarea publică de plată () {System.out. Sistem.out.println (""); }} // Rețineți că interfața este publică deoarece trebuie să o cunoașteți // toate clasele care le conțin ca proprietate // Dar! Clasele care implementează pot fi private, interne etc. // fiecare dintre ele care poate fi implementată și implementarea dorită // cu condiția să respectați metodele și câmpurile minime propuse de interfață. Will MozoInterpretul = New Mozo (); // clienți, atunci când introduceți bara, vi se atribuie un interpret inteligent (în acest caz același) CE CLAS = Clasa nouă (MozoInterpretul); CLASSFRA CF = Classfra nouă (MozoInterpretul); Clasa CI = Clasa nouă (MozoInterpretul); //acțiune! Clienții CE.Process () este procesată; cf.proces (); Ci.process (); }}  

    Ieșire

      zi bună, o cafea vă rog chelnerul întreabă bucătarul: O java! Bună dimineața, pot să am o cafea, vă rog?Chelnerul întreabă bucătarul: un java! Bonjour, o cafea S'IL Vouus Plaît? Chelnerul întreabă bucătarul: un Java! 

    Există o altă modalitate de a face aceasta? Da, o altă formă utilizează o clasă abstractă, această clasă implementează câteva metode, dar altele le pot lăsa "goale", astfel încât o anumită clasă să o extindă și le pot implementa, să le definească funcționalitatea. Este încă o altă modalitate de a face apel înbluște, deoarece rezumatul Clasa poate apela metodele de fiecare dată când aveți nevoie de ele (în funcție de unele funcții așteptate), iar conținutul acestor metode (ceea ce face cu adevărat) este definit în afara, în clasa care o extinde.

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *