docs/DesignPatterns
diff observer.tex @ 10:3f937af7e13e
added Erweiterungen; commented things out; other small things
author | meillo@marmaro.de |
---|---|
date | Tue, 19 Jun 2007 17:44:28 +0200 |
parents | d7c3983a367a |
children |
line diff
1.1 --- a/observer.tex Tue Jun 19 16:44:59 2007 +0200 1.2 +++ b/observer.tex Tue Jun 19 17:44:28 2007 +0200 1.3 @@ -7,8 +7,8 @@ 1.4 \documentclass{beamer} 1.5 1.6 1.7 - \usepackage[T1]{fontenc} 1.8 - \usepackage[latin1]{inputenc} 1.9 +% \usepackage[T1]{fontenc} 1.10 + \usepackage[utf8]{inputenc} 1.11 \usepackage{ngerman} 1.12 \usepackage{graphicx} 1.13 \usepackage[automark]{scrpage2} 1.14 @@ -164,7 +164,7 @@ 1.15 } 1.16 1.17 1.18 -\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung} 1.19 +\frame{ \frametitle{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung} 1.20 1.21 \begin{block}{Lösung} 1.22 \begin{itemize} 1.23 @@ -217,51 +217,56 @@ 1.24 1.25 \begin{block}{Neue Namen} 1.26 \begin{itemize} 1.27 - \item Pinnwand-Sekretärin-Einheit -> ``Subject'' 1.28 - \item Die Zettel auf der Pinnwand -> ``subjectState'' 1.29 - \item Interessenten -> ``Observers'' 1.30 + \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject'' 1.31 + \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState'' 1.32 + \item Interessenten $\rightarrow$ ``Observers'' 1.33 \end{itemize} 1.34 \end{block} 1.35 1.36 \pause 1.37 1.38 \begin{block}{Schnittstellen} 1.39 - Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''. 1.40 + Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''. 1.41 \end{block} 1.42 1.43 } 1.44 1.45 1.46 -\frame { \frametitle{UML-Diagramm des Observers} 1.47 +\frame { \frametitle{Struktur-Diagramm des Observers} 1.48 \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } 1.49 } 1.50 1.51 1.52 +\frame { \frametitle{Interaktions-Diagramm des Observers} 1.53 + \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } 1.54 +} 1.55 + 1.56 + 1.57 % Daten aus der Beschreibung des Observers von GoF 1.58 % in welche Gruppen wird er eingeordnet 1.59 -\frame{ \frametitle{Beschreibung des Observers} 1.60 - 1.61 - \begin{block}{Klassifizierung} 1.62 - Verhaltensmuster, objektbasierend 1.63 - \end{block} 1.64 - 1.65 - \begin{block}{Auch bekannt als} 1.66 - Publish-Subscribe, Dependents 1.67 - \end{block} 1.68 - 1.69 - \begin{block}{Zweck} 1.70 - Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. 1.71 - % todo: besser formulieren 1.72 - \end{block} 1.73 - 1.74 - \begin{block}{Kurzbeschreibung} 1.75 - Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert 1.76 - werden können, und um die abhängigen Objekte über Zustandsänderungen zu 1.77 - informieren. 1.78 - % todo: Formulierung überdenken 1.79 - \end{block} 1.80 - 1.81 -} 1.82 +%\frame{ \frametitle{Beschreibung des Observers} 1.83 +% 1.84 +% \begin{block}{Klassifizierung} 1.85 +% Verhaltensmuster, objektbasierend 1.86 +% \end{block} 1.87 +% 1.88 +% \begin{block}{Auch bekannt als} 1.89 +% Publish-Subscribe, Dependents 1.90 +% \end{block} 1.91 +% 1.92 +% \begin{block}{Zweck} 1.93 +% Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. 1.94 +% % todo: besser formulieren 1.95 +% \end{block} 1.96 +% 1.97 +% \begin{block}{Kurzbeschreibung} 1.98 +% Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert 1.99 +% werden können, und um die abhängigen Objekte über Zustandsänderungen zu 1.100 +% informieren. 1.101 +% % todo: Formulierung überdenken 1.102 +% \end{block} 1.103 +% 1.104 +%} 1.105 1.106 1.107 \subsection{Beispiele} 1.108 @@ -291,11 +296,70 @@ 1.109 1.110 \subsection{Erweiterungen} 1.111 % Erweiterungen, verbleibende Probleme, Kompromisse beim Design 1.112 -\frame{ \frametitle{} 1.113 +\frame{ \frametitle{Mögliche Erweiterungen} 1.114 1.115 - \begin{block}{} 1.116 + \begin{block}{Ein Observer und mehrere Subjects} 1.117 + \begin{itemize} 1.118 + \item Der Name des Subjects muss mitgesendet werden. 1.119 + \end{itemize} 1.120 \end{block} 1.121 1.122 + \begin{block}{Nur für bestimmte Informationen anmelden} 1.123 + \begin{itemize} 1.124 + \item Oberservers melden sich nur für bestimmte Informationen an 1.125 + \item Es werden weniger uninteressante Updates gesendet 1.126 + \end{itemize} 1.127 + \end{block} 1.128 + 1.129 + \begin{block}{UpdateManager} 1.130 + \begin{itemize} 1.131 + \item Bei komplexen Update-Zusammenhängen empfehlenswert 1.132 + \item vermittelt zwischen Subject und Observer 1.133 + \item Mehr dazu in der Ausarbeitung 1.134 + \end{itemize} 1.135 + \end{block} 1.136 + 1.137 +} 1.138 + 1.139 + 1.140 +%\frame{ \frametitle{Wer ruft notify() auf?} 1.141 +% 1.142 +% \begin{block}{Das Subject} 1.143 +% \begin{itemize} 1.144 +% \item[+] notify() wird sicher bei jedem setState() aufgerufen 1.145 +% \item[-] hohe Update-Kosten bei Änderungen en-block 1.146 +% \end{itemize} 1.147 +% \end{block} 1.148 +% 1.149 +% \begin{block}{Der Observer} 1.150 +% \begin{itemize} 1.151 +% \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich 1.152 +% \item[-] der Client darf den notify()-Aufruf nicht vergessen 1.153 +% \end{itemize} 1.154 +% \end{block} 1.155 +% 1.156 +%} 1.157 + 1.158 + 1.159 + 1.160 +\subsection{Code} 1.161 +% Kein Code! 1.162 +\frame{ \frametitle{Code? --- Nein, kein Code!} 1.163 + 1.164 + \begin{block}{Denn} 1.165 + \begin{center} 1.166 + \textbf{ Implementierungen sind Schall und Rauch,\\ 1.167 + Konzepte dagegen bleiben bestehen! } 1.168 + \end{center} 1.169 + \end{block} 1.170 + 1.171 + \vspace{4ex} 1.172 + {\scriptsize 1.173 + \begin{block}{Aber} 1.174 + Beispiel-Implementierung in der Ausarbeitung. 1.175 + \end{block} 1.176 + } 1.177 + 1.178 } 1.179 1.180 1.181 @@ -322,39 +386,39 @@ 1.182 } 1.183 1.184 1.185 -\section{Fragen} 1.186 -\frame{ \frametitle{Fragen?} 1.187 - \vspace{5ex} 1.188 - \centerline{\huge ?} 1.189 -} 1.190 +%\section{Fragen} 1.191 +%\frame{ \frametitle{Fragen?} 1.192 +% \vspace{5ex} 1.193 +% \centerline{\huge ?} 1.194 +%} 1.195 1.196 1.197 % Erklaerung des Vorgehens 1.198 % Frage: war es erfolgreich? 1.199 -\frame{ \frametitle{} 1.200 +%\frame{ \frametitle{} 1.201 +% 1.202 +% \begin{block}{} 1.203 +% \end{block} 1.204 +% 1.205 +%} 1.206 1.207 - \begin{block}{} 1.208 - \end{block} 1.209 1.210 -} 1.211 - 1.212 - 1.213 -\frame{ \frametitle{Abschließend} 1.214 - \begin{block}{Verwendete Software} 1.215 - \begin{itemize} 1.216 - \item Debian GNU/Linux 1.217 - \item \LaTeX-Beamer und \texttt{pdflatex} 1.218 - \item Vim 1.219 - \item qiv und ImageMagick 1.220 - \item Mercurial 1.221 - \end{itemize} 1.222 - \end{block} 1.223 - 1.224 - \begin{block}{} 1.225 - \vspace{3ex} 1.226 - \centerline{\textbf{Danke für eure Aufmerksamkeit}} 1.227 - \end{block} 1.228 -} 1.229 +%\frame{ \frametitle{Abschließend} 1.230 +% \begin{block}{Verwendete Software} 1.231 +% \begin{itemize} 1.232 +% \item Debian GNU/Linux 1.233 +% \item \LaTeX-Beamer und \texttt{pdflatex} 1.234 +% \item Vim 1.235 +% \item qiv und ImageMagick 1.236 +% \item Mercurial 1.237 +% \end{itemize} 1.238 +% \end{block} 1.239 +% 1.240 +% \begin{block}{} 1.241 +% \vspace{3ex} 1.242 +% \centerline{\textbf{Danke für eure Aufmerksamkeit}} 1.243 +% \end{block} 1.244 +%} 1.245 1.246 1.247 % Code (Beispiel-Implementierung)