Da es schon sehr viele Definitionen gibt, habe ich mir eine eigene ausgedacht:
"Patterns sind Lösungsschema für Probleme, die in der objektorientierten Softwareentwicklung in verschiedenen Kontexten immer wieder auftreten."
Pattern-Systeme setzen sich aus mehreren Patterns zusammen, und bilden eine Art Wissensdatenbank. Durch Patterns wird versucht Lösungen die in einem Projekt erfolgreich eingesetzt wurde, auch in anderen Projekten zu verwenden. Patterns sind verwandt zu Frameworks aber noch abstrakter; es wird nur die Lösungsidee aber i.a. kein konkreter Sourcecode aufgeschrieben.
Welche Arten von
Pattern gibt es ?
Man kann Patterns danach unterscheiden in welcher Phase des Softwareentwicklungsprozesses sie auftreten
Implementierungspattern beziehen sich immer auf eine spezielle Programmiersprache. Typische- Patterns sind z.B:
Entwurfsmuster lassen sich i.a. von jeder objektorientierten Programmiersprache
implementieren. Sie bestehen im wesentlichen aus der Beschreibung eines
Objektmodells.
Typische Patterns sind [Gang-of-Four]:
Eine Definition aus dem Gang-of-Four Buch:
Ein Entwurfsmuster benennt, motiviert und erläutert systematisch
einen allgemeinen Entwurf, der ein in objektorientierten Systemen immer
wiederkehrendes Entwurfsproblem löst. Es beschreibt das Muster, die
Lösung, wann die Lösung anwendbar ist sowie die Konsequenzen
der Anwendung. Es gibt weiterhin Implementierungstips und Beispiele. Die
Lösung ist eine allgemeine Anordnung von Objekten und Klassen, die
das Problem lösen. Die Lösung wird maßgeschneidert und
implementiert, um das Problem in einem konkreten Kontext zu lösen.
2. Problem: Zugriff auf entfernte Objekte
Das abzulaufende Programm ist auf mehreren Rechnern verteilt, die Kommunikation
erfolgt über TCP/IP. Aus Effizienzgründen soll die
Kommunikation ueber das Netz so weit wie möglich verringert werden.
3. Problem: Mapping zwischen Objekten und Tabellen
Die Objekte einer Anwendung sind in einer relationalen Datenbank gespeichert. Die Attribute des Objektes sind aber auf mehreren Tabellen verteilt, d.h. die Tabellen sind über den "Fremdschlüsselmechanismus" miteinander verknüpft. Um ein Objekt vollständig einzulesen, muss also auf mehreren Tabellen zugegriffen werden. Oft ist man aber nur an wenigen Attribute des Objektes interessiert.
So verschieden die Probleme sind, so haben sie doch eines gemeinsam. Bei allen 3 Probleme versuche ich auf ein Objekt zuzugreifen, wobei der Zugriff teuer ist. Bei allen 3 Problemen kann ich anstatt das teure Objekt ein billigeres Stellvertreterobjekt benutzen.
Im Textverarbeitungssystem verlangsamt die eingebundene Grafik das System. Dabei ist es aber nicht immer nötig die Graphik vollständig einzubinden. In vielen Fällen reicht es die Umrandung der Graphik, sowie eine textuelle Beschreibung des Bildes zu zeigen. Erst auf Wunsch des Benutzers wird das vollständige Bild eingebunden. (siehe StarOffice Paket)
Den Zugriff auf entfernte Objekte kann reduziert werden, indem im lokalen System ein Stellvertreter-Objekt gehalten wird. Das Stellvertreter Objekt hat eine verminderte Funktionalität als das Original. Es bietet nur die Dienste an, die häufig gebraucht werden. Bei den selteneren Diensten leitet das Stellvertreter Objekt die Anfrage dann an das Original weiter.
Auch im letzten Beispiel muss ein Objekt nicht immer vollständig aus der Datenbank ausgelesen werden. Anstatt nachfolgende Tabellen über Fremdschlüssel einzulesen, wird einfach ein Stellvertreter Objekt erzeugt. (siehe Beispiel).
IVM-Mitarbeitertabelle
Nr | Name | Vorname | Abt.Schlüssel |
1 | Redmann | Wolfgang | 60 |
5 | Meucht | Klaus | 60 |
Schlüssel | Bezeichnung | Leiter | Umsatz |
60 | BMW-Anwendungen | 1 | zu wenig |
ausgelesenes Objekt IVM-Mitarbeiter:
Klasse | IVM-Mitarbeiter |
Name | Meucht |
Vorname | Klaus |
Abteilung | Proxy Objekt für Abteilung mit Schlüssel 60 |
Eine genauere Beschreibung der Lösung ist in [Siemens]
beschrieben, es besteht im wesentlichen aus dem unten angegeben Objektmodell.
Zunächst die Beschreibung der notwendigen Objekte mit dem Klassendiagramm.
Vorteile von DesignPatterns
[Riehle]
Pattern Languages bzw Systeme von Pattern
Damit der Anwender ein gewünschtes Pattern zu einem spezifischen Problem schnell findet, werden die Patterns geeignet katalogisiert. Die Kriterien, wie einzelne Patterns zusammengefasst werden sind in der Literatur aber leider nicht einheitlich.
Die einzelnen Patterns sollten immer in einer einheitlichen Form dokumentiert werden. Typischerweise wird zuerst der Zweck des Patterns in ein bis zwei Sätzen beschrieben. Danach erfolgt meistens ein konkretes Beispiel, indem das Pattern anwendbar ist. Es schliesst sich eine formale abstrakte Beschreibung des Patterns mit einem Objektmodell als Lösung an. Danach erfolgt eine konkrete Lösung mit SourceCode für das zuvor angegebene Beispiel. Danach folgt oft eine CheckListe für Vorraussetzungen wann das Pattern sinnvoll ist, und ggf. Verweise auf verwandte Patterns. Zum Schluß werden bekannte Projekte aufgelistet, in denen das Pattern erfolgreich angewendet wurde.
Alle die hier aufgeführten Bücher können bei mir persönlich eingesehen werden. Es sind hier nur die Bücher aufgelistet, die ich selber durchgesehen habe, und daher hat diese Liste kein Anspruch auf Vollständigkeit.
Entwurfsmuster – Addison Wesly Verlag ISBN: 3-89319-950-0
Dieses Buch hat die Design Patterns erst berühmt gemacht. Die Autoren werden oft als Gang-of-four bezeichnet. Das Buch enthält die am häufigsten in OO-Projekten vorkommenden Patterns. Sie sind aber für Anfaenger in OO schwierig zu verstehen.Die Beispiele sind in C++, teilweise auch in Smalltalk .
Hinweis: Die von den Gang-of-Four eingeführten Patterns sind
im folgenden neu erschienen Buch anhand Smalltalk Beispiele erläutert:
Autoren: Alpert, Sherman / Brown, Kyle / Woolf, Bobby
Titel: The Design Patterns Smalltalk Companion (Software Patterns Series)
Ersch.-Jahr: 09.1997
Preis: DM 48,36
ISBN: 0201634694
Für mich das beste Buch über Design-Patterns. Es ergänzt und erweitert die Patterns der Gang-of-four. Obwohl das Buch in Englisch geschrieben ist, ist es viel einfacher zu lesen, als das Buch der Gang-of-four. Es gibt inzwischen eine deutschsprachige Ausgabe.
Beinhaltet eine Sammlung von Smalltalk Implementierungs Patterns. Diese Patterns sind für alle Smalltalk Dialekte gültig. Das Buch ist in einem sehr einfachen Englisch geschrieben, und ist auch für Programmierer die die Sprache gerade gelernt haben, geeignet. Für mich das beste auf dem Markt befindliche Smalltalk Buch. Dieses Buch gibt es inzwischen auch in deutscher Sprache unter dem einfachen Titel "Smalltalk"
Analyis Patterns - Addison Wesley ISBN 0-201-89542-0
Das einzigste mir bekannte Buch über Analyse-Patterns. Es ist in einem einfachen Englisch geschrieben, die Notation der Beispiele entspricht aber keinem OO-Standard. (allerdings habe ich wahrscheinlich eine aeltere Ausgabe).