Archive for the ‘ Design Patterns ’ Category

Head First Design Patterns C# – Update

Head First Design PatternsIch habe heute mal ein kleines Update in meinem SVN Repository gemacht und dort die beiden Patterns “Strategy” und “Observer” aus dem Buch “Head First Design Patterns” ( oder zu deutsch – “Entwurfsmuster von Kopf bis Fuss” ) hinzugefügt.

Ich habe sie allerdings nicht in Java, wie im Buch, geschrieben sondern nach C# übersetzt und als Konsolenanwendungen hinterlegt. Für all diejenigen die grade erst anfangen sich mit Design Patterns auseinanderzusetzen ist es auf jeden Fall einen Blick wert ! Es ist bestimmt auch eine Bereicherung für diejenigen unter euch, denen meine selbst gestalteten Beispiele nicht die nötige Erleuchtung gebracht haben.

Ich werde demnächst auch das Head First Beispiel zum “Decorator Pattern” in C# bereit stellen.

Viel Spaß damit !

Head First Strategy Pattern Beispiel C#
Head First Observer Pattern Beispiel C#
Alle meine hinterlegten Beispiele zu Design Patterns

UPDATE :

Habe jetzt auch das Decorator Pattern ins SVN hochgeladen. Viel Spaß damit !

Head First Decorator Pattern Beispiel C#

Das Observer Pattern

ObserverHeute möchte ich euch gerne das Observer Pattern aus der Familie der Behavioral Patterns vorstellen. Es ist, zumindest nach meiner Einschätzung, eines der wichtigsten und meist genutzten Patterns und gehört, wie ich finde, zum Grundwissen eines guten Programmierers dazu. Einige werden möglichweise sagen, dass es man es an sich so heute gar nicht mehr selbst schreiben braucht, grade in Zeiten von Java und .NET welche über delegates und/oder events verfügen. Recht habt ihr ! Jedoch finde ich es wichtig eine Technologie von Grund auf zu verstehen und somit biete ich hier einen kleinen Crashkurs für Einsteiger.

Zum aufwärmen ein kleines Anwendungsbeispiel:
Stellen wir uns vor wir sitzen in einer Zentrale und müssen den Standort von Zügen überwachen. Was wäre das für ein unglaublicher Aufwand ständig nachzufragen wo sich ein Zug gerade befindet nicht wahr ? Warum also den Spieß nicht einfach umdrehen ? Sollen mir die Züge doch einfach bescheid geben wenn sich ihre aktuelle Position verändert hat. Dazu müsste ich diesen lediglich bescheid sagen : “Hey gib mir absofort deine Position durch wenn sich diese verändert hat“. Das hat außerdem den Vorteil, dass wenn meine Kollegen ebenfalls die Position dieses Zuges abfragen möchten, sie diesen nur bescheid zu geben brauchen.

Read the rest of this entry »

Head First Design Patterns in C#

Head First Design PatternsIch hatte, als ich hier anfing über Design Pattern zu schreiben, ein Buch empfohlen mit dessen Hilfe ich mir die Patterns der GoF angeeignet habe. Der Titel lautete Head First Design Patterns. Da alle, in diesem Buch beschriebenen, Beispiele zu den Patterns der GoF in Java gehalten sind, habe ich mir überlegt diese Patterns, für die Leute die nicht so gut mit Java können, in C# zu übersetzen und in meinem Repository zu lagern.

Gesagt, getan ! Heute morgen habe ich mir das Pattern Beispiel aus dem ersten Kapitel geschnappt und in C# neu geschrieben. Das Beispiel zum Strategy Pattern über eine Horde Enten befindet sich nun in meinem Pattern SVN Repository. Für Freunde von C# ist es vielleicht mal ein Blick Wert. Weitere C# Patterns folgen in Kürze.

Strategy Pattern Codesample

Ein bisschen Code gefällig ?

RepositoryEs kam schon mehrfach die Frage wo sich denn mein, im nebenstehenden Text erwähntes, SVN Repository eigentlich befindet. Da meine momentanen Projekte etwas eingefroren sind habe ich diese nach dem letzten Blog Design Update erstmal aus der Linkliste genommen.

Ich habe mir aber jetzt die Mühe gemacht und ein Repository, für die hier veröffentlichten Design Patterns, eingerichtet. Ihr könnt also absofort für jeden meiner Artikel zum Thema Design Patterns auch den original Quellcode einsehen und diesen natürlich weiterverwenden oder damit rumspielen.

Beachtet den Link zum Design Patterns Repository in der Linkliste der rechten Menüspalte. Dort könnt ihr jederzeit auf die aktuellsten Versionen meiner Design Patterns zugreifen (auch die zu denen eventuell noch keine Artikel geschrieben wurden).

Hier mal ein direkter Link zu meinem Design Patterns SVN Repository bei code.google.com

Abstract Factory Pattern

FactoryNachdem ich euch beim letzten mal das Strategy Pattern vorgestellt habe, möchte ich euch heute ein weiteres sehr nützliches Pattern aus der Familie der Creational Patterns vorstellen. Das Abstract Factory Pattern. Factory passt hier vom Namen schon sehr gut, weil es tatsächlich eine Fabrik für neue Objekte ist.

Und was kann dieses Pattern ?
Stellen wir uns einmal vor, wir möchten Autos erstellen lassen. Viele verschiedene Autos verschiedener Hersteller mit verschiedenen Motoren und unterschiedlichen Reifen, welche wiederrum auch wieder Sommer- oder Winterreifen sein können. Klingt nach einer sehr komplexen Sache mit vielen Klassen. Geht aber ganz einfach !

tire and engineZunächst brauchen wir Klassen für die einzelnen Objekte unseres Autos. Dazu gehören Reifen und ein Motor. Da wir zwischen Sommer- und Winterreifen unterscheiden möchten, schreiben wir zusätzlich eine kleine ENUM. Also schreiben wir insgesamt zunächst die folgenden 4 Klassen.

klassen

Read the rest of this entry »