Heim > Java > javaLernprogramm > Beispielcode-Analyse für Java-Proxy-Muster

Beispielcode-Analyse für Java-Proxy-Muster

WBOY
Freigeben: 2023-04-18 16:52:07
nach vorne
838 Leute haben es durchsucht

1. Dynamischer Proxy-Modus

Eigenschaften des dynamischen Proxys:

  • Beim Proxying eines Objekts ist es nicht erforderlich, die Schnittstelle zu implementieren

  • Bei der Generierung des Proxy-Objekts wird die JDK-API verwendet, um den Proxy dynamisch zu erstellen Objekt im Speicher (Wir müssen den Schnittstellentyp angeben, den das erstellte Proxy-Objekt/Zielobjekt implementiert)

Ein anderer Name für dynamischen Proxy: JDK-Proxy, Schnittstellen-Proxy

2, dynamischer JDK-Proxy

Klassendiagramm:

Beispielcode-Analyse für Java-Proxy-Muster

Dynamischer Java-Proxy Die Klasse befindet sich unter dem Paket java.lang.reflect und umfasst im Allgemeinen die folgenden zwei Klassen:

1. Schnittstelle InvocationHandler: Diese Schnittstelle definiert nur einen Methodenaufruf für öffentliche Objekte (Objekt obj, Methodenmethode). , Object [] args) Bei der tatsächlichen Verwendung bezieht sich der erste Parameter obj im Allgemeinen auf die Proxy-Klasse, method auf die Proxy-Methode und args auf das Parameterarray der Methode. Diese abstrakte Methode wird dynamisch in der Proxy-Klasse implementiert.

2. Proxy: Diese Klasse ist eine dynamische Proxy-Klasse

static Object newProxyInstance(ClassLoader loader, Class[] interfaces,InvocationHandler h):
Nach dem Login kopieren

Gibt eine Instanz der Proxy-Klasse zurück. Die zurückgegebene Proxy-Klasse kann als Proxy-Klasse verwendet werden (die in der Schnittstelle der Proxy-Klasse deklarierten Methoden können verwendet werden).

Implementierungsschritte der dynamischen Generierung:

    Erstellen Sie eine Klasse, die die Schnittstelle InvocationHandler implementiert, die die Aufrufmethode implementieren muss.
  • Erstellen Sie die Proxy-Klasse und -Schnittstelle.
  • Rufen Sie die statische Methode von Proxy auf, um eine zu erstellen Proxy-Klasse: „Aufrufmethode über Proxy“ Klasse:
  • public interface Moveable {
        void move();
    }
    Nach dem Login kopieren

    Testklasse: newProxyInstance(ClassLoader loader,Class[]

    //实现Moveable 接口,并随机暂停一段时间
    
    import java.util.Random;
    public class Car implements Moveable{
        @Override
        public void move() {
            try{
                Thread.sleep(new Random().nextInt(1000));
                System.out.println("汽车行驶中");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    Nach dem Login kopieren
    Das Ausgabeergebnis ist:
  • Das Auto beginnt zu fahren

    Das Auto fährt
  • Das Auto beendet die Fahrt, die Fahrzeit beträgt: 137 Millisekunden//Die folgende Zeit wird zufällig generiert und jedes Mal anders

    Hinweis:

    JDK-Proxy kann nur Klassen vertreten, die keine Schnittstellen implementieren.

    cglib implementiert das Proxying für Klassen für die angegebene Zielklasse und überschreiben Sie die Methoden, um eine Verbesserung zu erreichen. Da jedoch Vererbung verwendet wird, kann die endgültige geänderte Klasse nicht als Proxy verwendet werden, da Xiaoying selbst kein vollständiges Verständnis für diesen Bereich hat, daher werde ich es nicht erklären Hier können Sie auf die wichtigsten technischen Artikel anderer Blogs verweisen.

    Das obige ist der detaillierte Inhalt vonBeispielcode-Analyse für Java-Proxy-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage