Java >> Java Tutorial >  >> Java

Entwurfsmuster – Adaptermuster – Teil VII

Bis jetzt haben wir alle kreativen Arten von Designmustern besprochen. In diesem Beitrag erstellen wir eine Demo über strukturelle Designmuster. Unser erstes Designmuster in dieser Serie ist das Adapter-Designmuster . Wie gesagt, dieses Entwurfsmuster ist ein strukturelles Entwurfsmuster. Dieses Entwurfsmuster kombiniert die Fähigkeiten von zwei unabhängigen Schnittstellen. Es fungiert im Grunde wie eine Brücke zwischen zwei inkompatiblen Schnittstellen.

Das einfachste Beispiel, um das Adaptermuster im wirklichen Leben zu verstehen, ist die Steckdose auf verschiedenen Kontinenten, die unterschiedliche Spannungen liefert. Ein Reisender aus Asien kann in Europa einen Adapter verwenden, um 240 V-Strom für elektronische Geräte zu erhalten.

Wann sollte das Adapter-Designmuster verwendet werden?

Erstens, wenn ein Client eine andere als die verfügbare Schnittstelle erwartet, kann das Adaptermuster zu diesem Zeitpunkt helfen, eine Schnittstelle einer Klasse in eine andere Schnittstelle umzuwandeln, die der Client verwenden kann. Das Adaptermuster ermöglicht jedoch die Wiederverwendung einer Menge Code und ist einer der Hauptgründe, warum es bei der Softwareentwicklung am günstigsten ist. In ähnlicher Weise würden Sie ein echtes Beispiel in JDK-Bibliotheken von InputStreamReader finden und OutputStreamWriter .

Wie verwende ich das Adapter Design Pattern?

In dieser Implementierung zeigen wir also, wie das Adapter-Designmuster verwendet wird. Wir haben einen Reisenden aus Asien, der in Europa reist, er möchte sein elektronisches Gerät verwenden, das 240 V Strom aus der Steckdose benötigt, aber Europa liefert nur 120 V Strom. Wir werden eine Adapterklasse entwerfen, die 120 V-Strom in 240 V-Strom umwandelt.

Unsere Zielklasse oder Client-Klasse ist AsiaSocket, wie unten gezeigt:


package com.betterjavacode.designpatterns.adapterexample;

public class AsiaSocket {

    public void provideElectricity() {
        System.out.println("Provide electricity of 240 V");
    }
}

Es ist eine einfache Klasse mit einer Methode provideElectricity .

Unsere angepasste Klasse ist EuropeSocket, die eine Schnittstelle IEuropeSocket wie unten gezeigt implementiert:


package com.betterjavacode.designpatterns.adapterexample;

public class EuropeSocket implements IEuropeSocket {

    public void getElectricity() {
        System.out.println("Get electricity of 120 V");
    }

}

Zweitens werden wir eine Adapterklasse implementieren, die einen Adapter zwischen europäischen und asiatischen Socket-Klassen bereitstellt. Dies sieht wie folgt aus:


package com.betterjavacode.designpatterns.adapterexample;

public class EuropeAsiaAdapter implements IEuropeSocket {

    AsiaSocket asiaSocket;

    public EuropeAsiaAdapter(AsiaSocket asiaSocket) {
        this.asiaSocket = asiaSocket;
    }

    public void getElectricity() {
        asiaSocket.provideElectricity();
    }

}

Diese Klasse hat einen Konstruktor zum Instanziieren von AsiaSocket und implementiert die IEuropeSocket-Schnittstelle.

Jetzt zeigen wir in unserer Demo-Klasse, wie man dieses Adaptermuster verwendet.


package com.betterjavacode.designpatterns;

import com.betterjavacode.designpatterns.adapterexample.AsiaSocket;
import com.betterjavacode.designpatterns.adapterexample.EuropeAsiaAdapter;
import com.betterjavacode.designpatterns.adapterexample.EuropeSocket;
import com.betterjavacode.designpatterns.adapterexample.IEuropeSocket;

public class AdapterDemo {

    public static void main(String[] args) {
        EuropeSocket es = new EuropeSocket();

        AsiaSocket as = new AsiaSocket();

        IEuropeSocket europeAsiaAdapter = new EuropeAsiaAdapter(as);

        System.out.println(" Electricity in Asia ");
        as.provideElectricity();

        System.out.println(" Electricity in Europe ");
        es.getElectricity();

        System.out.println(" Electricity for Asia in Europe");
        europeAsiaAdapter.getElectricity();

    }

}

Deshalb, wenn Sie diesen Demo-Kurs durchführen, wird die Ausgabe zeigen, dass wir Strom von 240 V für asiatische elektronische Geräte in Europa erhalten werden.

Herunterladen

Abschließend haben wir gezeigt, wie das Adaptermuster verwendet wird. Der Democode wird hier im GitHub-Repository verfügbar sein.

Referenzen

  1. Adapterdesignmuster
  2. Adapterentwurfsmuster in Java

Java-Tag