Wzorzec projektowy— ADAPTER

Wzorzec projektowy Adapter służy do dostosowywania interfejsu jednego obiektu do interfejsu innego, aby obiekty te mogły współpracować, mimo że posiadają niekompatybilne interfejsy.
Java
// Istniejący interfejs, który chcemy dostosować
interface ExistingInterface {
void request();
}
// Klasa reprezentująca obiekt z istniejącym interfejsem
class ExistingClass implements ExistingInterface {
@Override
public void request() {
System.out.println("Existing Class - Request");
}
}
// Nowy interfejs, który chcemy używać
interface TargetInterface {
void targetRequest();
}
// Klasa adaptera dostosowująca istniejący interfejs do nowego interfejsu
class Adapter implements TargetInterface {
private ExistingInterface existingObject;
public Adapter(ExistingInterface existingObject) {
this.existingObject = existingObject;
}
@Override
public void targetRequest() {
// Wywołanie istniejącej metody, dostosowując jej wynik do nowego interfejsu
existingObject.request();
}
}
// Klient korzystający z nowego interfejsu
public class Client {
public static void main(String[] args) {
// Utworzenie obiektu z istniejącym interfejsem
ExistingInterface existingObject = new ExistingClass();
// Utworzenie adaptera, który dostosowuje istniejący interfejs do nowego interfejsu
TargetInterface adaptedObject = new Adapter(existingObject);
// Użycie nowego interfejsu
adaptedObject.targetRequest();
}
}W tym przykładzie mamy istniejący interfejs ExistingInterface, który jest implementowany przez klasę ExistingClass. Następnie mamy nowy interfejs TargetInterface, który reprezentuje interfejs, który chcemy używać.
Klasa Adapter dostosowuje istniejący interfejs do nowego interfejsu, implementując TargetInterface i korzystając z obiektu posiadającego istniejący interfejs. Klient korzysta z obiektu Adapter, nie zdając sobie sprawy z istnienia istniejącego interfejsu, dzięki czemu nowy interfejs jest używany zgodnie z oczekiwaniami.