Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

PHP Design Patterns

von: Stephan Schmidt

O'Reilly Verlag, 2009

ISBN: 9783897218161, 508 Seiten

2. Auflage

Format: PDF, OL

Mac OSX,Windows PC,Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 33,00 EUR

Ersparnis: 6,90 EUR

  • Enterprise PHP5 - Serviceorientierte und webbasierte Anwendungen für den Unternehmenseinsatz
    Spring & Hibernate - Eine praxisbezogene Einführung
    Projektplanung realisieren mit Project 2007 - Das Praxisbuch für alle Project-Anwender
    Web 2.0 - Eine empirische Bestandsaufnahme
    IT Service Management in der Praxis mit ITIL 3 - Zielfindung, Methoden, Realisierung
    SilverStripe - Installation, Konfiguration, Praxis, Erweiterung, MVC nutzen, Webservices Sicherheit, i18n, Best Practices, Formulare, Scaffolding

     

     

     

 

Mehr zum Inhalt

PHP Design Patterns


 

KAPITEL 6

Verhaltensmuster
(S. 265-266)

Mithilfe von Design Patterns können Sie nun elegant Objekte erzeugen und kennen auch Muster, mit deren Hilfe Sie Objekte zu komplexeren Strukturen zusammensetzen können. In diesem Kapitel werden Sie Muster implementieren, die sich mit dem Verhalten und der Interaktion der einzelnen Objekte befassen. Diese Muster beschreiben nicht nur die beteiligten Klassen und Objekte, sondern auch die Art und Weise, wie diese zur Laufzeit miteinander interagieren.

Mit dem Template-Method-Pattern können Sie einen Algorithmus zunächst abstrakt schrittweise definieren und mithilfe von Vererbung in Unterklassen die einzelnen Schritte des Algorithmus implementieren. Das Subject/Observer-Pattern tritt in Aktion, wenn ein Objekt den Zustand eines anderen Objekts überwachen möchte. Da auch bei Verhaltensmustern die bisher definierten Regeln gelten, stellt dieses Muster sicher, dass das überwachte und das überwachende Objekt lose gekoppelt sind und damit leicht ausgetauscht werden können. Das Command-Pattern hingegen ist nützlich, wenn eine Anfrage an ein Objekt nicht direkt an das Objekt gestellt werden soll, sondern stattdessen gekapselt werden muss. Dadurch wird ermöglicht, dass die Anfrage als Teil einer Kette gespeichert und ausgeführt werden kann.

Die nachfolgenden beiden Muster dieses Kapitels sind bei komplexen Objektkompositionen besonders hilfreich. Mit dem Visitor-Pattern können Sie Informationen aus Objekten extrahieren, die Ihnen öffentlich nicht zugänglich sind. Dabei müssen Sie nicht einmal die Struktur der Objekte kennen. Das Iterator-Pattern ermöglicht Ihnen schließlich, auf eine abstrahierte Art einen Objektbaum zu traversieren, ohne die Struktur des Baums zu kennen. Dadurch können Sie die Struktur der Objekte anpassen, ohne den Code zu ändern, der die Objekte verarbeitet.

Mithilfe des State-Patterns werden Sie auch in schwierigen Situationen die in Kapitel 3 definierten Regeln einhalten und es schaffen, dass ein Objekt so erscheint, als würde es zur Laufzeit seine Implementierung wechseln. Und abschließend werden Sie mit dem Chain-of-Responsibility-Pattern eine Anfrage an eine Kette von Objekten senden, ohne zu wissen, welches der Objekte die Anfrage bearbeiten wird.

Das Subject/Observer-Pattern

Es ist unvermeidlich, dass die Objekte Ihrer Applikationen miteinander interagieren. Doch dadurch entsteht häufig eine sehr enge Kopplung zwischen den einzelnen Objekten, die die Wiederverwendbarkeit der einzelnen Klassen verringert, da diese Abhängigkeiten zueinander haben. Entstehen diese Abhängigkeiten, weil ein Objekt informiert werden muss, wenn sich die Eigenschaften eines anderen Objekts verändern, kann das Subject/Observer-Pattern, auch Beobachter-Muster genannt, Abhilfe schaffen.

Motivation

Um sicherzustellen, dass die Autos, die Sie an Ihre Kunden vermieten, stets in einem guten Zustand sind und allen Sicherheitsstandards genügen, müssen diese regelmäßig zur Inspektion. Wann ein Auto zur Inspektion sollte, hängt davon ab, wie viele Kilometer damit gefahren wurden. So könnten die Regeln für die Inspektion zum Beispiel wie folgt lauten:

1. Nach 1.000 gefahrenen Kilometern soll ein Auto zur Erstinspektion.

2. Danach soll das Auto alle 2.500 Kilometer zur Inspektion.

Nun könnten Sie einfach in der Klasse RentalCompany einen Check integrieren, der bei der Rückgabe eines Autos überprüft, ob eine der beiden Regeln greift. Dazu müssten Sie lediglich die returnVehicle()-Methode ein wenig anpassen.