docs/DesignPatterns

changeset 33:97b57d24fd7b

added sample code; modified summary
author meillo@marmaro.de
date Fri, 10 Aug 2007 22:15:51 +0200
parents 3d6e01222e28
children b2cefbd90180
files code/observer-example.java detailed-observer.tex
diffstat 2 files changed, 61 insertions(+), 21 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/code/observer-example.java	Fri Aug 10 22:15:51 2007 +0200
     1.3 @@ -0,0 +1,31 @@
     1.4 +        import java.util.Observable;
     1.5 +        import java.util.Observer;
     1.6 +
     1.7 +        public class MessageBoard extends Observable {
     1.8 +          private String message;
     1.9 +
    1.10 +          public String getMessage() {
    1.11 +            return message;
    1.12 +          }
    1.13 +
    1.14 +          public void changeMessage(String message) {
    1.15 +            this.message = message;
    1.16 +            setChanged();
    1.17 +            notifyObservers(message);
    1.18 +          }
    1.19 +
    1.20 +          public static void main(String[] args) {
    1.21 +            MessageBoard board = new MessageBoard();
    1.22 +            Student bob = new Student();
    1.23 +            Student joe = new Student();
    1.24 +            board.addObserver(bob);
    1.25 +            board.addObserver(joe);
    1.26 +            board.changeMessage("More Homework!");
    1.27 +          }
    1.28 +        }
    1.29 +
    1.30 +        class Student implements Observer {
    1.31 +          public void update(Observable o, Object arg) {
    1.32 +            System.out.println("Message board changed: " + arg);
    1.33 +          }
    1.34 +        }
     2.1 --- a/detailed-observer.tex	Mon Aug 06 02:25:32 2007 +0200
     2.2 +++ b/detailed-observer.tex	Fri Aug 10 22:15:51 2007 +0200
     2.3 @@ -9,6 +9,7 @@
     2.4    \usepackage[utf8]{inputenc}
     2.5    \usepackage{ngerman}
     2.6    \usepackage{graphicx}
     2.7 +  \usepackage{listings}
     2.8    \usepackage[automark]{scrpage2}
     2.9  
    2.10    \setkomafont{sectioning}{\normalfont\normalcolor\bfseries}
    2.11 @@ -387,25 +388,50 @@
    2.12  
    2.13  
    2.14  \newpage
    2.15 +
    2.16  \section{Zusammenfassung}
    2.17   %\textbf{Zusammenfassend}
    2.18 -  \paragraph{Zusammenfassung}
    2.19 +  
    2.20 +  Ich habe in meiner Ausarbeitung bisher ganz bewusst auf Quellcode verzichtet, denn ich wollte vermitteln weshalb das Observer-Pattern so aufgebaut ist wie es ist. Ich wollte Verständnis für Design Patterns entwickeln und zeigen, dass sie absolut logische Lösungen sind.
    2.21 +
    2.22 +  Design Patterns sind dabei Modelle wie Quellcode aufgebaut werden sollte. Sie sind kein Code --- sie beschreiben nur wie Code sein sollte. Das ist auch ganz gut so, denn:
    2.23 +
    2.24 +  \begin{quote}
    2.25 +    \textbf{ Implementierungen sind Schall und Rauch,\\ 
    2.26 +    Konzepte dagegen bleiben bestehen!  }
    2.27 +  \end{quote}
    2.28 +
    2.29 +  Aus diesem Grund will ich mich mit Quelltext auf dieses Beispiel im Anhang beschränken. Dennoch finde ich es wichtig, doch zumindest eine Beispiel-Implementierung vorzeigen zu können, da Quellcode sehr aussagekräftig sein kann. In jeden Fall wird er meine sonstigen Ausführungen gut abrunden.
    2.30 +
    2.31 +
    2.32 +  \paragraph{In drei Sätzen:}
    2.33      \begin{itemize}
    2.34        \item Menschen denken basierend auf der Realität
    2.35        \item deshalb Design Patterns auf Realität zurückführen
    2.36        \item Patterns anwenden weil man es in der Realität auch so machen würde
    2.37      \end{itemize}
    2.38 -  
    2.39  
    2.40  
    2.41  
    2.42  
    2.43  
    2.44 +\appendix
    2.45  
    2.46 +\newpage
    2.47  
    2.48 +\section{Beispiel-Implementierung}
    2.49  
    2.50 -\section{Abschließend}
    2.51 -  \paragraph{Verwendete Software}
    2.52 +  {\scriptsize
    2.53 +    \lstinputlisting[language=java]{code/observer-example.java}
    2.54 +  }
    2.55 +  \flushright{ \tiny Quellcode von http://java2s.com }
    2.56 +
    2.57 +
    2.58 +
    2.59 +
    2.60 +
    2.61 +
    2.62 +\section{Verwendete Software}
    2.63    \begin{itemize}
    2.64      \item Debian GNU/Linux
    2.65      \item \texttt{pdflatex}
    2.66 @@ -419,21 +445,4 @@
    2.67  
    2.68  
    2.69  
    2.70 -
    2.71 -
    2.72 -\appendix
    2.73 -
    2.74 -\section{Code}
    2.75 -  \textbf{ Implementierungen sind Schall und Rauch,\\ Konzepte dagegen bleiben bestehen!  }
    2.76 -
    2.77 -
    2.78 -
    2.79 -
    2.80 -
    2.81 -
    2.82 -
    2.83 -
    2.84 -
    2.85 -
    2.86 -
    2.87  \end{document}