Skip to content

Commit 6237fd7

Browse files
author
janschloesser
committed
📝 📦 Rebuild pdf & html to fit current status
1 parent cc8ff22 commit 6237fd7

File tree

2 files changed

+54
-61
lines changed

2 files changed

+54
-61
lines changed

docs/output/index.html

Lines changed: 54 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,80 @@
11
<!DOCTYPE html>
22
<html lang="de">
3-
<head>
3+
<head>
44
<meta charset='utf-8'>
55
<meta http-equiv="X-UA-Compatible" content="chrome=1">
66
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
77
<meta name="author" content="Jan André Schlösser">
8-
<meta name="description"
9-
content="Proxy ist ein GoF-Strukturmuster und stellt ein Stellvertreter-Objekt oder Platzhalter (Proxy) für ein anderes Objekt zur Verfügung. Es bietet dadurch Kontrolle über die Objekterzeugung und dessen Zugriff.">
8+
<meta name="description" content="Proxy ist ein GoF-Strukturmuster und stellt ein Stellvertreter-Objekt oder Platzhalter (Proxy) für ein anderes Objekt zur Verfügung. Es bietet dadurch Kontrolle über die Objekterzeugung und dessen Zugriff.">
109
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
11-
<link rel="stylesheet" type="text/css" href="assets/stylesheets/stylesheet.css" media="screen"/>
12-
<link rel="stylesheet" type="text/css" href="assets/stylesheets/print.css" media="print"/>
13-
<link rel="stylesheet" type="text/css" href="assets/stylesheets/highlight.css" media="screen"/>
14-
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css"
15-
integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
10+
<link rel="stylesheet" type="text/css" href="assets/stylesheets/stylesheet.css" media="screen" />
11+
<link rel="stylesheet" type="text/css" href="assets/stylesheets/print.css" media="print" />
12+
<link rel="stylesheet" type="text/css" href="assets/stylesheets/highlight.css" media="screen" />
13+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
1614
<script src="assets/javascripts/highlight.pack.js"></script>
17-
<script src="https://code.jquery.com/jquery-3.3.1.js"
18-
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
15+
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
1916
<script>hljs.initHighlightingOnLoad();</script>
2017

2118
<!--[if lt IE 9]>
2219
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
2320
<![endif]-->
2421

25-
<title>Entwurfsmuster-Seminar: Proxy</title>
26-
<!-- anything you put here will go verbatim in the header section
27-
Useful for adding javascripts, custom metadata, and so on... -->
28-
</head>
22+
<title>Proxy Entwurfsmuster</title>
23+
</head>
2924

30-
<body>
31-
<header>
32-
<div class="inner">
25+
<body>
26+
<header>
27+
<div class="inner">
3328
<h1>Proxy Pattern</h1>
3429
<h2>Ein Einblick in die Welt des Proxies in PHP</h2>
35-
<a href="https://github.com/it4need/php-proxy-pattern" class="button">
36-
<small>Projekt ansehen auf</small>
37-
GitHub</a>
38-
</div>
39-
</header>
30+
<a href="https://github.com/it4need/php-proxy-pattern" class="button"><small>Projekt ansehen auf</small> GitHub</a>
31+
</div>
32+
</header>
4033

41-
<div id="content-wrapper">
42-
<div class="inner clearfix">
34+
<div id="content-wrapper">
35+
<div class="inner clearfix">
4336
<section id="main-content">
4437

45-
<!-- anything you put here will go before the opening <body> tag
46-
(ie: before the README’s contents) Markdown will become HTML -->
47-
<h1 id="das-entwurfsmuster-proxy">Das Entwurfsmuster Proxy</h1>
48-
<h2 id="faiconcrosshairs-absicht">\faicon{crosshairs} Absicht</h2>
49-
<p>Proxy ist ein <strong><a href="https://de.wikipedia.org/wiki/Entwurfsmuster_(Buch)">GoF</a>-Strukturmuster</strong>
50-
und stellt ein Stellvertreter-Objekt oder Platzhalter (Proxy) für ein anderes Objekt zur Verfügung. Es
51-
bietet dadurch Kontrolle über die Objekterzeugung und dessen Zugriff.</p>
52-
<h2 id="faiconthumbs-up-motivation">\faicon{thumbs-up} Motivation</h2>
53-
<p>Ein sehr simples Beispiel, warum man den Zugriff zu einem Objekt kontrollieren möchte, ist ein virtueller
54-
Proxy zum verzögerten Nachladen eines Bildes (Lazy Loading). Es ist nicht immer notwendig, dass wir das
55-
Bild bereits beim Instanzzieren des Objekts in den Speicher laden. Nehmen wir an, dass das Bild auf
56-
einer Website im unteren Bereich angezeigt werden soll (below the fold). Beim Laden der Website ist es
57-
nicht notwendig, bereits alle Bilder auf der Website zu laden - es reicht vollkommen aus, diese Bilder
58-
zu laden, welche im sichtbaren Bereich der Website sind. Die folgende Abbildung zeigt das Lazy-Loading
59-
anhand einer kürzlich verwendeten horizontalen Scrollbar.</p>
60-
<p><img src="../assets/images/lazyloading.jpg"
61-
alt="Beispiel des Lazy-Loading anhang einer vertikalen Scrollbar"/></p>
62-
<!-- anything you put here will go before the closing </body> tag
63-
(ie: after the README’s contents) Markdown will become HTML -->
64-
<hr/>
38+
<h1 id="entwurfsmuster-proxy---eine-einfuhrung">Entwurfsmuster Proxy - eine Einführung</h1>
39+
<h2 id="faiconcrosshairs-absicht">\faicon{crosshairs} Absicht</h2>
40+
<p>Das Proxy-Entwurfsmuster ist ein <strong><a href="https://de.wikipedia.org/wiki/Entwurfsmuster_(Buch)">GoF</a>-Strukturmuster</strong> und stellt dir ein Stellvertreter-Objekt oder Platzhalter (<em>Proxy</em>) für ein anderes Objekt (<em>Subjekt</em>) zur Verfügung. Es bietet dir dadurch Kontrolle über die Objekterzeugung des Subjekts und dessen Zugriff darauf.</p>
41+
<h2 id="faiconthumbs-up-motivation">\faicon{thumbs-up} Motivation</h2>
42+
<h3 id="langweilig---die-erste-sicherer-browser-dank-zugriffsproxy">Langweilig - die Erste: Sicherer Browser dank Zugriffsproxy</h3>
43+
<p>Stell dir mal vor, dass Du einen sicheren Browser entwickeln möchtest, welcher aus Kostengründen allerdings z.B. bereits vorhandene Browser-Schnittstellen im Hintergrund verwenden soll. Damit die Nutzer deines Browsers vor Datendiebstahl geschützt sind, soll dein Browser nur sichere HTTPS-Verbindungen erlauben und alle unsicheren HTTP-Verbindungen blockieren. Da der Quelltext deiner Engine allerdings nicht verändert werden kann/darf (z.B. aus Lizenzgründen), kannst Du die Zugriffsbeschränkung auf HTTPS nicht einfach so in das Ursprungsobjekt einfügen. Jetzt kommt dein <em>Zugriffsproxy</em> ins Spiel: Er kontrolliert den Zugriff auf den relevanten Teil der Browser-Schnittstelle (hier das Subjekt) und delegiert alle weiteren Methodenaufrufe direkt an das Subjekt weiter. Somit muss der Quelltext deiner geplanten Engine nicht verändert werden und alle sind glücklich!</p>
44+
<h3 id="motiviert---die-zweite-lazy-loading-mit-virtuellem-proxy">Motiviert - die Zweite: Lazy Loading mit virtuellem Proxy</h3>
45+
<p>Ein weiteres sehr simples Beispiel, warum Du den Zugriff zu einem Objekt kontrollieren möchtest, ist ein <em>virtueller Proxy</em> zum verzögerten Laden eines Bildes (Lazy Loading). Es ist nämlich nicht immer notwendig, dass ein Bild bereits beim Instanzzieren eines Objekts in den Speicher geladen werden muss.</p>
46+
<p>Stell dir vor, dass Du ganz viele Bilder auf deiner Werbe-Website deines sicheren Browsers hast. Da viele dieser Bilder im unteren unsichtbaren Bereich (“below the fold”) sind, ist es beim Laden der Website nicht sinnvoll, noch nicht sichtbare Bilder deiner Website zu laden - es reicht also, dass nur diese Bilder geladen werden, die aktuell tatsächlich im sichtbaren Bereich der Website sind. Die folgende Abbildung zeigt das Lazy-Loading anhand einer kürzlich benutzten horizontalen Scrollbalken:</p>
47+
<p><img src="../assets/images/lazyloading.jpg" alt="Beispiel des Lazy-Loading anhang einer vertikalen Scrollbar" /></p>
48+
<p>Das Laden des realen Bildes (also das Subjekt) wird also in diesem Beispiel durch einen Stellvertreter vertreten (Proxy) und der Zugriff auf das tatsächliche Objekt wird soweit verzögert, bis er wirklich erst notwendig ist.</p>
49+
<h3 id="hochmotiviert---die-dritte-reporting-der-downloads-dank-remote-proxy">Hochmotiviert - die Dritte: Reporting der Downloads dank Remote-Proxy</h3>
50+
<p>Da du natürlich am Ende des Tages wissen möchtest, ob dein sicherer Browser von den Nutzer tatsächlich heruntergeladen wird, hast du dir bei der Planung der Website bereits einige Download-Statistiken überlegt:</p>
51+
<ul>
52+
<li>
53+
Datum
54+
</li>
55+
<li>
56+
Uhrzeit (in Stunden)
57+
</li>
58+
<li>
59+
Endgerätetyp
60+
</li>
61+
</ul>
62+
<p>Diese Statistiken werden über die Downloads über deine Website generiert. Da du den Browser aber noch zusätzlich auf Download-Portalen anbietest, musst du diese Zahlen natürlich ebenfalls in deine Statistik miteinbeziehen. Alle Download-Portale bieten dir API-Schnittstellen an, welche ebenfalls die oben genannten Daten liefern. Mithilfe des Proxy-Objekts kannst du nun in die ursprüngliche Zugriffkontrolle des Statistik-Objekts eingreifen und z.B. die Eigenschaften des Objekts auf die von der jeweiligen API-Schnittstelle zur Verfügung gestellten Daten setzen. Weitere Methoden vom Proxies werden dann einfach an das eigentliche Reportobjekt (unserem Subjekt) delegiert.</p>
6563

66-
<br/><br/>
67-
<p class="repo-owner">
68-
<small>Das <a href="https://github.com/jasonlong/architect-theme">architect-theme</a> ist ein Produkt
69-
von <a href="https://github.com/jasonlong">jasonlong</a>.
70-
</small>
71-
</p>
64+
<br /><br /><p class="repo-owner"><small>Das <a href="https://github.com/jasonlong/architect-theme">architect-theme</a> ist ein Produkt von <a href="https://github.com/jasonlong">jasonlong</a>.</small></p>
7265
</section>
7366
<aside id="sidebar">
74-
<a href="https://github.com/it4need/php-proxy-pattern/archive/master.zip" class="button">
75-
<small>Projekt-Download</small>
76-
.zip
77-
</a>
78-
<a href="https://github.com/it4need/php-proxy-pattern/archive/master.tar.gz" class="button">
79-
<small>Projekt-Download</small>
80-
.tar.gz
81-
</a>
67+
<a href="https://github.com/it4need/php-proxy-pattern/archive/master.zip" class="button">
68+
<small>Projekt-Download</small>
69+
.zip
70+
</a>
71+
<a href="https://github.com/it4need/php-proxy-pattern/archive/master.tar.gz" class="button">
72+
<small>Projekt-Download</small>
73+
.tar.gz
74+
</a>
8275
</aside>
76+
</div>
8377
</div>
84-
</div>
85-
<script src="assets/javascripts/custom.js"></script>
86-
</body>
78+
<script src="assets/javascripts/custom.js"></script>
79+
</body>
8780
</html>

docs/output/proxy-pattern.pdf

10.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)