Heim  >  Artikel  >  Java  >  So implementieren Sie das Adaptermuster des Java-Entwurfsmusters

So implementieren Sie das Adaptermuster des Java-Entwurfsmusters

WBOY
WBOYnach vorne
2023-04-25 10:37:061498Durchsuche

    Was ist das Adaptermuster?

    Das Adaptermuster (Adapter) ist wie folgt definiert: Konvertieren Sie die Schnittstelle einer Klasse in eine andere vom Kunden gewünschte Schnittstelle, sodass Klassen, die aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten können, funktionieren können zusammen . Das Adaptermuster ist in zwei Typen unterteilt: Klassenstrukturmuster und Objektstrukturmuster. Ersteres weist einen höheren Grad an Kopplung zwischen Klassen auf und erfordert, dass Programmierer die interne Struktur relevanter Komponenten in der vorhandenen Komponentenbibliothek verstehen wird teilweise relativ selten genutzt.

    Vorteile

    1. Der Client kann die Zielschnittstelle transparent über den Adapter aufrufen.

    2. Vorhandene Klassen werden nicht wiederverwendet.

    3. Entkoppeln Sie die Zielklasse und die Adapterklasse, um das Problem inkonsistenter Schnittstellen zwischen der Zielklasse und der Adapterklasse zu lösen.

    4. Halten Sie in vielen Geschäftsszenarien das Öffnungs- und Schließprinzip ein.

    Nachteile

    1. Der Adapter-Schreibprozess muss vollständig in Verbindung mit dem Geschäftsszenario berücksichtigt werden, was die Komplexität des Systems erhöhen kann.

    2. Es erhöht die Schwierigkeit des Codelesens und verringert die Lesbarkeit des Codes. Übermäßiger Einsatz von Adaptern führt zu einem Chaos im Systemcode.

    Wissenspunkte

    Klassenadaptermuster: Es kann durch Mehrfachvererbung implementiert werden. Beispielsweise kann C++ eine Adapterklasse definieren, um sowohl die Geschäftsschnittstelle des aktuellen Systems als auch die Komponentenschnittstellen zu erben, die bereits in der vorhandenen Komponentenbibliothek vorhanden sind. Java unterstützt keine Mehrfachvererbung. Sie können jedoch eine Adapterklasse definieren, um die Geschäftsschnittstelle des aktuellen Systems zu implementieren und gleichzeitig Komponenten zu erben, die bereits in der vorhandenen Komponentenbibliothek vorhanden sind.

    Objektadaptermuster: Sie können Komponenten, die in der vorhandenen Komponentenbibliothek implementiert wurden, in die Adapterklasse einführen, die auch die Geschäftsschnittstelle des aktuellen Systems implementiert. Lassen Sie uns nun ihre Grundstruktur vorstellen.

    Adaptermodus-Implementierung

    Fall: Hongmao verwendet Feuerkristalle, um das Feuertanz-Wirbelwindschwert Qi zu aktivieren

    Zielschnittstelle: Changhong-Schwert Qi

    Adaptee-Klasse: Feuertanz-Wirbelwindschwert Qi

    Adapter (Adapter) Kategorie: Feuerkristall

    Hongmao kann derzeit nur das Changhong-Schwert-Qi aktivieren, aber wenn er das Feuertanz-Wirbelwind-Schwert-Qi aktivieren möchte

    , kann er nur die Kraft des Feuerkristalls nutzen, um das Changhong-Schwert-Qi in das Feuertanz-Wirbelwind-Schwert-Qi umzuwandeln

    Hinweis: Ich bin hier, um das Fire Dance Whirlwind Sword Qi an den Changhong Sword Qi

    -Klassenadapter anzupassen.

    Changhong Sword Qi

    deklariert eine Schnittstelle für das Changhong Sword Qi, einschließlich einer abstrakten Methode zur Aktivierung des Changhong Sword Qi

    public interface Chang {
        void chang();
    }
    Feuertanz-Wirbelwind-Schwert-Qi

    Die Kategorie „Feuertanz-Wirbelwind-Schwert-Qi“ deklariert eine Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi.

    public class Huo {
        public void huo() {
            System.out.println("火舞旋风剑气");
        }
    }
    Fire Crystal

    Die Fire Crystal-Klasse erbt die Fire Dance Whirlwind Sword Qi-Klasse (Zweck: Nach der Vererbung können Sie die Methoden in der Klasse verwenden) und implementiert die Changhong Sword Qi-Schnittstelle (Zweck: um die Aktivierung von zu realisieren Changhong-Schwert-Qi-Methode). Unter den Methoden zur Aktivierung des Changhong-Schwert-Qi wird die Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi verwendet.

    public class JingShi extends Huo implements Chang {
        @Override
        public void chang() {
            huo();
        }
    }
    Test
    public class Demo {
        public static void main(String[] args) {
            Chang haha = new JingShi();
            haha.chang();
        }
    }

    So implementieren Sie das Adaptermuster des Java-Entwurfsmusters

    Objektadapter

    Changhong Jianqi

    Deklariert eine Schnittstelle von Changhong Jianqi, einschließlich einer abstrakten Methode zum Aktivieren von Changhong Jianqi

    public interface Chang {
        void chang();
    }
    Fire Dance Whirlwind Sword Qi

    Fire Dance. Whir lwind Schwert Qi-Typ, deklariert eine Methode zur Aktivierung des Fire Dance Whirlwind Sword Qi.

    public class Huo {
        public void huo() {
            System.out.println("火舞旋风剑气");
        }
    }
    Feuerkristall

    Die Feuerkristallklasse implementiert die Changhong-Schwert-Qi-Schnittstelle, deklariert die Attribute eines Feuertanz-Wirbelwind-Schwert-Qi und implementiert die Methode zur Stimulierung des Changhong-Schwert-Qi. Die Methode zur Aktivierung des Feuertanz-Wirbelwind-Schwert-Qi ist in der Methode zur Aktivierung des Changhong-Schwert-Qi enthalten.

    public class JingShi implements Chang {
        private Huo huo;
        JingShi() {
        }
        JingShi(Huo huo) {
            this.huo = huo;
        }
        @Override
        public void chang() {
            huo.huo();
        }
    }
    Testen

    Neues Qi-Objekt „Feuertanz-Wirbelwindschwert“, neues Objekt „Feuerkristallstein“ und Übergabe des Qi-Objekts „Feuertanz-Wirbelwindschwert“ an das Objekt „Feuerkristallstein“.

    public class Demo {
        public static void main(String[] args) {
            Huo huo = new Huo();
            Chang haha = new JingShi(huo);
            haha.chang();
        }
    }

    So implementieren Sie das Adaptermuster des Java-Entwurfsmusters

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Adaptermuster des Java-Entwurfsmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen