Jun 07

Wenn man sich eingehender mit MVC beschäftigt stellt man fest, dass es ziemlich schwierig ist die Schichten so anzulegen, dass sie vollständig von einander entkoppelt sind. Ein Knackpunkt dabei ist die Datenübertragung. Wie teilt die Business Logic der Präsentationsschicht Daten mit? Hierbei könnte man natürlich auf das gute alte $GLOBALS-Array zurückgreifen. Dies ist zwar eine Lösung aber keine gute. Wir sollten vielmehr die Daten aus einer Schnittstelle beziehen und sie auch dorthin speichern, damit andere Klassen über die fixen Schnittstellen direkt wieder darauf zugreifen können.
Dabei hilft uns das Registry Pattern. Es stellt eine Klasse dar, in der Daten abgelegt und wieder ausgelesen werden können. Hierzu wird für den globalen Zugriff das Singleton Pattern verwendet.
Schauen wir uns nun zunächst das UML-Diagramm an: Continue reading »

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , ,

Jun 06

Heute widmen wir uns mal der Problemstellung, dass wir ein Script schreiben müssen, welches verschiedene Aktionen nacheinander ausführen muss, sozusagen ein Batch-Script in PHP. Wir nehmen an, dass wir eine Aktion haben, die etwas installiert, und eine, die etwas deinstalliert. Die Aktionen sollen beliebig kombinierbar sein und mit einem Befehl auszuführen sein.
In diesem Fall hilft uns das Command-Pattern. Hier registrieren wir eine bestimmte Menge von Kommandos auf einem Controller (hier Invoker), welcher diese dann ausführt. Bevor wir an die Implementation gehen, schauen wir uns kurz das UML-Diagramm an: Continue reading »

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , , ,

Jun 05

Mit dem Singleton Pattern kann man bei der Implementierung von Anwendungen sicher stellen, dass von einer spezifischen Klasse immer nur genau eine Instanz vorhanden ist. Nehmen wir in unserem Beispiel einen Datenbankwrapper. In der Regel arbeiten wir mit _einer_ Datenbank und haben auch nur _eine_ Verbindung zu ihr. Dazu verwenden wir in unserem Beispiel einen Wrapper (natürlich ohne Funktionalität). Wir möchten also, dass von diesem Wrapper immer nur eine Instanz zur Verfügung steht, damit wir von jeder Stelle des Codes aus auf die selbe Instanz zugreifen können.
Schauen wir uns dazu einmal das UML-Diagramm an: Continue reading »

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , ,

Jun 04

Da ich mich seit kurzem intensiv mit Entwurfsmustern auseinander setze, möchte ich jetzt eine Beispielimplementation für das Observer Pattern (Beobachter Muster) in PHP vorstellen.
Hierfür nehmen wir an, wir haben eine Datenquelle, die ein Array mit Punkteständen aus einem beliebigen Spiel übergeben bekommt. Wir möchten diese nun unabhängig von einander darstellen: Durchschnittliche Punktzahl, Summe aller Punkte. Wenn sich die Daten im Objekt der Spielstände ändern, sollen die Darstellungsobjekte automatisch benachrichtigt werden und Daten abrufbereit zur Verfügung stehen.
Continue reading »

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , ,