Documente Academic
Documente Profesional
Documente Cultură
Chișinău – 2020
Definitie
Converteste interfața unei clase într-o altă interfață pe care o așteaptă clienții. Adapter
permite claselor să lucreze împreună, care altfel nu ar putea fi din cauza interfețelor
incompatibile.
Structura
Participanti
Realizare
interface Tournament{
public void fightKumite();
public void fightKata();
public void fightKataCoaches();
}
de asemenea avem clasa care realizeaza interfata data
@Override
public void fightKumite(){
System.out.println("participants fighting KUMITE");
}
@Override
public void fightKata(){
System.out.println("participants fighting KATA");
}
@Override
public void fightKataCoaches(){
System.out.println("coaches fighting KATA");
}
}
Dupa cum putem observa, in campionatul nostru avem trei tipuri de lupte ,
participantii se lupta in tipul KUMITE, KATA si de asemenea antrenorii se lupta in
tipul KATA. Organizarea campionatului o ia Organizatorul Campionatului.
class TournamentOrganizer{
private Tournament tournament;
public TournamentOrganizer(Tournament tournament){
this.tournament = tournament;
}
Putem observa ca campionatul s-a organizat cu succes, dar s-a produs o probleme
cand am aflat ca in campionatul care trebuie organizat in Ukraina , antrenorii nu se
lupta intre ei , insa se vor lupta participantii intr-un alt tip de lupte – TEAM KATA.
@Override
public void fightKumite(){
System.out.println("participants fighting KUMITE");
}
@Override
public void fightKata(){
System.out.println("participants fighting KATA");
}
@Override
public void fightTeamKata(){
System.out.println("participants fighting TEAM KATA");
}
}
Dupa cum observam, metodele luptelor se diferentiaza si de asta avem doua variante –
de creat o noua clasa de organizare a campionatelor sau sa implementam sablonul
Adapter. Sigur ca vom folosi sablonul Adapter de aceasa cream clasa
TournamentAdapter.
@Override
public void fightKumite(){
tournamentUkraine.fightKumite();
}
@Override
public void fightKata(){
tournamentUkraine.fightKata();
}
@Override
public void fightKataCoaches(){
tournamentUkraine.fightTeamKata();
}
}
In final obtinem
Output:
participants fighting KUMITE
participants fighting KATA
coaches fighting KATA
participants fighting KUMITE
participants fighting KATA
participants fighting TEAM KATA
Dupa cum putem observa organizatorul campionatelor la fel apeleaza metoda
fightKataCoaches(), dar multumita clasei TournamentAdapter se apeleaza metoda
fightTeamKata() a clasei KievTournament.
Concluzie