Heim > Java > javaLernprogramm > Detailliertes Lernen von statischem Java-Proxy und dynamischem Proxy

Detailliertes Lernen von statischem Java-Proxy und dynamischem Proxy

黄舟
Freigeben: 2016-12-12 13:24:50
Original
1788 Leute haben es durchsucht

1. Proxy-Muster
Das Proxy-Muster ist ein häufig verwendetes Java-Entwurfsmuster. Das Merkmal ist, dass die Proxy-Klasse und die Delegate-Klasse dieselbe Schnittstelle haben. Die Proxy-Klasse ist hauptsächlich für die Vorverarbeitung von Nachrichten für die Delegate-Klasse verantwortlich , Filtern von Nachrichten und Weiterleiten von Nachrichten an die Delegatenklasse sowie Nachbearbeiten von Nachrichten usw.
Normalerweise besteht eine Verbindung zwischen Proxy-Klassen und Delegate-Klassen. Das Objekt der Proxy-Klasse selbst implementiert den Dienst nicht, sondern ist durch Aufruf verknüpft das Objekt der Delegate-Klasse zur Bereitstellung eines bestimmten Dienstes.
Je nach Erstellungszeitraum des Agenten kann die Agentenklasse in zwei Typen unterteilt werden:
Statischer Proxy: Von Programmierern oder bestimmten Tools erstellt, generiert er automatisch Quellcode und kompiliert ihn dann. Die .class-Datei der Proxy-Klasse existiert bereits, bevor das Programm ausgeführt wird.
Dynamischer Proxy: Wird mithilfe des Reflexionsmechanismus dynamisch erstellt, wenn das Programm ausgeführt wird.

2. Einzelner statischer Proxy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

码如下:

public interface CountDao

{

// 查看账户方法

public void queryCount();

}

public class CountDaoImpl implements CountDao

{

public void queryCount()

{

System.out.println("查看账户方法...");

}

}

public class CountTrancProxy implements CountDao

{

private CountDao countDao;

public CountProxy(CountDao countDao)

{

this.countDao = countDao;

}

@Override

public void queryCount()

{

System.out.println("tranc start");

countDao.queryCount();

System.out.println("tranc end");

}

}

public class TestCount

{

public static void main(String[] args)

{

CountTrancProxy countProxy = new CountTrancProxy(new CountDaoImpl());

countProxy.updateCount();

}

}

Nach dem Login kopieren

Tranc-Start
Kontomethode anzeigen...
Tranc-Ende
3. Mehrere statische Proxys
Basierend auf dem obigen Code, ein neuer

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

码如下:

public class CountLogProxy implements CountDao

{

private CountDao countDao;

public CountLogProxy(CountDao countDao)

{

this.countDao = countDao;

}

@Override

public void queryCount()

{

System.out.println("Log start");

countDao.queryCount();

System.out.println("Log end");

}

}

Nach dem Login kopieren

Protokollstart
Vor der Transaktionsverarbeitung
Kontoansichtsmethode...
Nach der Transaktionsverarbeitung
Protokollende
4. Zusammenfassung
Tatsächlich können Proxy-Klassen verwendet werden, um den Proxy-Effekt durch Vererbung oder Schnittstellenimplementierung zu erzielen. Wenn jedoch mehrere Proxy-Klassen miteinander kombiniert werden müssen, ist die Vererbung nicht flexibel Proxy-Klassen werden ständig neu geschrieben, und die Implementierung von Schnittstellen ist sehr einfach, indem die Proxy-Klassen durch Aggregation kombiniert werden.



Verwandte Etiketten:
Quelle:php.cn
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