Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 51efb9e

Browse files
author
janschloesser
committed
📝 💬 Add multiple examples of different proxy usages for motivation
1 parent 0595741 commit 51efb9e

File tree

1 file changed

+43
-8
lines changed

1 file changed

+43
-8
lines changed
Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
11
## \faicon{thumbs-up} Motivation
2-
Ein sehr simples Beispiel, warum man den Zugriff zu einem Objekt kontrollieren möchte, ist ein virtueller Proxy zum
3-
verzögerten Nachladen eines Bildes (Lazy Loading). Es ist nicht immer notwendig, dass wir das Bild bereits beim
4-
Instanzzieren des Objekts in den Speicher laden. Nehmen wir an, dass das Bild auf einer Website im unteren Bereich
5-
angezeigt werden soll (below the fold). Beim Laden der Website ist es nicht notwendig, bereits alle Bilder auf der
6-
Website zu laden - es reicht vollkommen aus, diese Bilder zu laden, welche im sichtbaren Bereich der Website sind.
7-
Die folgende Abbildung zeigt das Lazy-Loading anhand einer kürzlich verwendeten horizontalen Scrollbar.
8-
9-
![Beispiel des Lazy-Loading anhang einer vertikalen Scrollbar](../assets/images/lazyloading.jpg)
2+
3+
### Langweilig - die Erste: Sicherer Browser dank Zugriffsproxy
4+
Stell dir mal vor, dass Du einen sicheren Browser entwickeln möchtest, welcher aus Kostengründen allerdings z.B. bereits
5+
vorhandene Browser-Schnittstellen im Hintergrund verwenden soll. Damit die Nutzer deines Browsers vor Datendiebstahl
6+
geschützt sind, soll dein Browser nur sichere HTTPS-Verbindungen erlauben und alle unsicheren HTTP-Verbindungen
7+
blockieren. Da der Quelltext deiner Engine allerdings nicht verändert werden kann/darf (z.B. aus Lizenzgründen),
8+
kannst Du die Zugriffsbeschränkung auf HTTPS nicht einfach so in das Ursprungsobjekt einfügen. Jetzt kommt dein
9+
_Zugriffsproxy_ ins Spiel: Er kontrolliert den Zugriff auf den relevanten Teil der Browser-Schnittstelle (hier das Subjekt)
10+
und delegiert alle weiteren Methodenaufrufe direkt an das Subjekt weiter. Somit muss der Quelltext deiner geplanten
11+
Engine nicht verändert werden und alle sind glücklich!
12+
13+
### Motiviert - die Zweite: Lazy Loading mit virtuellem Proxy
14+
Ein weiteres sehr simples Beispiel, warum Du den Zugriff zu einem Objekt kontrollieren möchtest, ist ein _virtueller Proxy_ zum
15+
verzögerten Laden eines Bildes (Lazy Loading). Es ist nämlich nicht immer notwendig, dass ein Bild bereits beim
16+
Instanzzieren eines Objekts in den Speicher geladen werden muss.
17+
18+
Stell dir vor, dass Du ganz viele Bilder auf deiner Werbe-Website deines sicheren Browsers hast. Da viele dieser Bilder
19+
im unteren unsichtbaren Bereich ("below the fold") sind, ist es beim Laden der Website nicht sinnvoll, noch nicht sichtbare Bilder
20+
deiner Website zu laden - es reicht also, dass nur diese Bilder geladen werden, die aktuell tatsächlich im sichtbaren
21+
Bereich der Website sind. Die folgende Abbildung zeigt das Lazy-Loading anhand einer kürzlich benutzten
22+
horizontalen Scrollbalken:
23+
24+
![Beispiel des Lazy-Loading anhang einer vertikalen Scrollbar](../assets/images/lazyloading.jpg)
25+
26+
Das Laden des realen Bildes (also das Subjekt) wird also in diesem Beispiel durch einen Stellvertreter vertreten (Proxy)
27+
und der Zugriff auf das tatsächliche Objekt wird soweit verzögert, bis er wirklich erst notwendig ist.
28+
29+
### Hochmotiviert - die Dritte: Reporting der Downloads dank Remote-Proxy
30+
Da du natürlich am Ende des Tages wissen möchtest, ob dein sicherer Browser von den Nutzer tatsächlich heruntergeladen
31+
wird, hast du dir bei der Planung der Website bereits einige Download-Statistiken überlegt:
32+
33+
- Datum
34+
- Uhrzeit (in Stunden)
35+
- Endgerätetyp
36+
37+
Diese Statistiken werden über die Downloads über deine Website generiert. Da du den Browser aber noch zusätzlich
38+
auf Download-Portalen anbietest, musst du diese Zahlen natürlich ebenfalls in deine Statistik miteinbeziehen.
39+
Alle Download-Portale bieten dir API-Schnittstellen an, welche ebenfalls die oben genannten Daten liefern.
40+
Mithilfe des Proxy-Objekts kannst du nun in die ursprüngliche Zugriffkontrolle des Statistik-Objekts eingreifen und z.B.
41+
die Eigenschaften des Objekts auf die von der jeweiligen API-Schnittstelle zur Verfügung gestellten Daten setzen.
42+
Weitere Methoden vom Proxies werden dann einfach an das eigentliche Reportobjekt (unserem Subjekt) delegiert.
43+
44+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /