Wie relevant sind OO-Entwurfsmuster für die Webentwicklung in PHP?

8

Singleton, Decorator, Abstract, Factory, und die Liste geht weiter. Wie relevant sind OO-Entwurfsmuster bei der Entwicklung von PHP-Anwendungen für das Web? Macht es etwas für die Leistung? Oder ist es nur, um den Code für agile Entwicklungspraktiken schlank zu halten? Wer ist der Hauptnutznießer für die Umsetzung dieser Entwurfsmuster? Ist es der Kunde oder der Entwickler?

Mir ist klar, dass ich mehrere Fragen stelle, aber alle beziehen sich auf das gleiche Thema. Ich bin nicht sicher, ob OO-Entwurfsmuster mit einer Skriptsprache notwendig sind, da es zur Laufzeit kompiliert wird. Was denkst du alle? Ist es wichtig?

    
Chuck Burgess 10.03.2010, 03:01
quelle

5 Antworten

9

Entwurfsmuster werden erstellt, um spezifische Probleme zu lösen. Diese Probleme treten auf, wenn Sie PHP oder eine andere Sprache verwenden (obwohl die Muster auch von Sprache zu Sprache variieren können). Die meisten Patterns haben ihre Wurzeln im objektorientierten Design, können aber auch an prozedurale Einstellungen angepasst werden. Verwenden Sie das Entwurfsmuster, wenn Sie ein Problem haben, das das Muster adressiert, egal ob PHP oder eine andere Sprache. Verwenden Sie kein Designmuster, nur weil es ein "Designmuster" ist - wissen Sie, wie und wann es angewendet wird und wann nicht.

Nachdem wir das gesagt haben, organisieren viele Design-Patterns Code, um ihren Zweck auf eine saubere und verständliche Weise zu erreichen. Es gibt andere Wege, das Problem zu lösen, aber das Entwurfsmuster ist eine allgemein anerkannte, klare und verständliche Methode. Wenn Sie ein Problem lösen müssen, das von einem bestimmten Muster angesprochen wird, sollten Sie normalerweise das Muster verwenden (oder das Muster anpassen), anstatt eine Alternative zu wählen.

Die Verwendung von Mustern ist daher für aktuelle und zukünftige Entwickler von Vorteil - sauberer, besser verstandener Code - und der Kunde - weniger Zeit, um das Rad neu zu erfinden, robuster, wartbarer Code. Das Verwenden von Mustern, wenn sie nicht angemessen sind, nützt niemandem; es ist möglicherweise eine Übung in der Frustration, die versucht, ein Muster anzupassen, um ein in Verbindung stehendes Problem zu lösen und mehr als wahrscheinlich wird einfach Sachen komplizierter.

    
tvanfosson 10.03.2010, 03:09
quelle
3
  

Wie relevant sind OO-Entwurfsmuster bei der Entwicklung von PHP-Anwendungen für das Web?

IMO sie sind sehr relevant für jede nicht-triviale PHP-Anwendung, solange das Muster, das Sie verwenden, für das vorliegende Problem anwendbar ist.

  

Macht es etwas für die Leistung?

Nicht unbedingt, und Sie können das sowohl in positiver als auch in negativer Hinsicht annehmen. Die meisten bekannten Entwurfsmuster werden nicht direkt einen positiven Leistungsvorteil hinzufügen, und einige, die mehr Vererbung oder Klassenstruktur auferlegen, könnten einen vernachlässigbaren Leistungsaufwand hinzufügen (ich betone vernachlässigbar). Die Vorteile der Verwendung bekannter Muster überwiegen gegebenenfalls diese vernachlässigbaren Kosten.

Ein Beispiel, das mir einfällt, wo ein Muster die "Leistung" (hinsichtlich der Speichernutzung) direkt verbessern würde, wäre die angemessene Verwendung des Singleton-Musters. Wenn Sie zu einem bestimmten Zeitpunkt wirklich nur eine Instanz eines Objekts benötigen, minimieren Sie die Speicherauslastung, indem Sie diese Instanz verwenden.

  

Oder ist es nur, um den Code für agile Entwicklungspraktiken schlank zu halten?

Ich würde sagen, dass die korrekte Verwendung von Mustern den Code aufrechterhält und nicht "schlank". Dies würde jeden Entwicklungszyklus erleichtern, einschließlich agiler, da Code, der bekannte Muster verwendet, einfacher zu lesen ist.

  

Wer ist der Hauptnutznießer für die Umsetzung dieser Entwurfsmuster? Ist es der Kunde oder der Entwickler?

In erster Linie der Entwickler (vor allem wenn es sich um einen oder mehrere Entwickler handelt, bei denen sich ein Team um den gleichen Code kümmert). Es gibt einen indirekten Einfluss auf den Kunden, da gut geschriebener Code offensichtlich weniger Bugs aufweist. und Software, die Muster verwendet, wird wahrscheinlich weniger Zeit haben, das Rad neu zu erfinden.

    
schematic 10.03.2010 03:19
quelle
1

Ja, aber Sie müssen die richtigen Muster für die Plattform wählen. Das mit Abstand wichtigste OO-Designmuster ist MVC (Model-View-Controller), das von allen gängigen Frameworks (CakePHP, CodeIgniter, etc.) verwendet wird.

    
Justin Ethier 10.03.2010 03:05
quelle
1

Bei Verwendung eines OOP gegenüber einem Nicht-OOP-Ansatz kann es zu geringfügigen Unterschieden in der Leistung kommen , wobei Nicht-OOP ein Bit schneller ist, aber der Unterschied wäre praktisch vernachlässigbar.

Ich denke, OO-Entwurfsmuster wären für die Code-Organisation von Vorteil, aber die Design-Probleme bleiben Ihnen überlassen. Ich denke, Sie würden mehr als der Benutzer profitieren. Der Benutzer kann das gleiche Ergebnis sehen, ob Sie OOP oder nicht-OOP verwenden.

    
Anthony Forloney 10.03.2010 03:07
quelle
0

Welche Algorithmen (wie Quicksort) sind prozedurale Programmierung, Design-Muster sind objektorientiertes Design. Sie sind bewährte Methode, um einige gemeinsame Probleme zu lösen.

Hauptförderer ist ein Devolper - aber als Nebeneffekt erhält ein Kunde wahrscheinlich ein besseres Endprodukt.

Wann immer sie relevant sind oder nicht, hängt von den bestimmten Anwendungsanforderungen und der Vorgehensweise ab, die Sie gewählt haben. Es klingt vielleicht lakonisch, aber wenn Sie beginnen, Ihre Anwendung zu analysieren und ihre Designanforderungen mit vorhandenen Mustern zu vergleichen, werden Sie wissen, wie und wann Sie sie verwenden sollen.

    
doc 10.03.2010 03:20
quelle

Tags und Links