language agnostic - welche - Verwenden Sie Designmuster?




wann benutzt man welche präposition (10)

Wie ist die Durchdringung von Design Patterns in der realen Welt? Verwenden Sie sie in Ihrer täglichen Arbeit - diskutieren Sie, wie und wo Sie sie mit Ihren Kollegen anwenden - oder bleiben sie eher ein akademisches Konzept?

Stellen sie tatsächlich Ihren Job zur Verfügung? Oder sind sie nur etwas, worüber die Leute reden, um klug zu klingen?

Hinweis: Ignorieren Sie zum Zweck dieser Frage "einfache" Designmuster wie Singleton . Ich spreche über das Entwerfen Ihres Codes, damit Sie Model View Controller usw. nutzen können.


Es gibt viele Designmuster, die über das Einfache hinausgehen und in der "realen Welt" verwendet werden. Gutes Beispiel verwendet das Model View Controller Pattern. Ich habe Class Factories mehrfach in Projekten für meinen Arbeitgeber eingesetzt, und ich habe viele bereits geschriebene Projekte gesehen, die sie ebenfalls verwenden.

Ich sage nicht, dass jedes Designmuster verwendet wird, aber viele sind es.


Ich benutze absolut Designmuster. An dieser Stelle nehme ich MVC als Designmuster als selbstverständlich hin. Mein Hauptgrund für ihre Verwendung ist, dass ich bescheiden genug bin, um zu wissen, dass ich wahrscheinlich nicht die erste Person bin, die auf ein bestimmtes Problem stößt. Ich starte selten ein Stück Code, das weiß, welches Muster ich verwenden werde; Ich beobachte ständig den Code, um zu sehen, ob er sich natürlich zu einem bestehenden Muster entwickelt.

Ich mag auch Martin Fowlers Patterns of Enterprise Application Architecture sehr . Wenn sich ein Problem oder eine Aufgabe präsentiert, blättere ich in einen verwandten Bereich (es ist meist ein Nachschlagewerk) und lese ein paar Übersichten über die Muster. Sobald ich eine bessere Vorstellung vom allgemeinen Problem und den vorhandenen Lösungen habe, beginne ich zu sehen, welchen langfristigen Weg mein Code wahrscheinlich über die Erfahrung anderer einschlagen wird. Am Ende habe ich viel bessere Entscheidungen getroffen.

Design Patterns spielen definitiv eine große Rolle in all meinen Ideen "für die Zukunft".


Ich versuche Muster zu verwenden, wenn sie anwendbar sind. Ich denke, es ist irgendwie traurig, dass Entwickler Designmuster im Code implementieren, nur um ihrer Sache willen. Für die richtige Aufgabe können Designmuster jedoch sehr nützlich und mächtig sein.


Ich versuche es, ja. Sie unterstützen in der Tat die Wartbarkeit und Lesbarkeit Ihres Codes. Es gibt jedoch Leute, die sie missbrauchen, normalerweise (aus dem, was ich gesehen habe), indem sie ein System in ein Muster zwingen, das es nicht gibt.


Ja, das tun wir, normalerweise passiert es, wenn wir anfangen etwas zu entwerfen und dann merkt jemand, dass es einem existierenden Muster ähnelt. Wir schauen uns das dann an und sehen, wie es uns helfen würde, unser Ziel zu erreichen.

Wir verwenden auch Muster, die nicht dokumentiert sind, aber aus dem Entwerfen hervorgehen.

Wohlgemerkt, wir benutzen sie nicht oft.


Ja, ich benutze viele bekannte Designmuster, aber am Ende baue ich auch eine Software auf, die ich später herausfinde und die ein 'benanntes' Designmuster verwendet. Die meisten eleganten, wiederverwendbaren Designs könnten als "Muster" bezeichnet werden. Es ist viel wie Tanzbewegungen. Wir alle kennen den Walzer und den 2-Step, aber nicht jeder hat einen Namen für den 'Bump and scoot', obwohl die meisten von uns das tun.


Meiner Meinung nach ist die Frage: "Benutzt du Designmuster?" Allein ein bisschen fehlerhaft, weil die Antwort allgemein JA ist.

Lassen Sie mich erklären, wir, Programmierer und Designer, alle verwenden Designmuster ... wir realisieren es einfach nicht immer. Ich weiß, das klingt Klischee, aber du gehst nicht zu Mustern, Muster kommen zu dir. Sie entwerfen Dinge, es könnte wie ein bestehendes Muster aussehen, Sie nennen es so, damit jeder versteht, wovon Sie sprechen, und die Gründe für Ihre Designentscheidung sind stärker, weil Sie wissen, dass es schon früher diskutiert wurde.

Ich persönlich benutze Muster als Kommunikationsmittel. Das ist es. Sie sind keine Designlösungen, sie sind keine Best Practices, sie sind keine Werkzeuge in einer Toolbox.

Versteh mich nicht falsch, wenn du ein Anfänger bist, werden Bücher über Muster dir zeigen, wie eine Lösung am besten gelöst wird, indem du ihre Muster verwendest, anstatt ein anderes fehlerhaftes Design. Sie werden wahrscheinlich von der Übung lernen. Sie müssen jedoch erkennen, dass dies nicht bedeutet, dass jede Situation ein entsprechendes Muster benötigt, um es zu lösen. Jede Situation hat hier und da eine Eigenart, die Sie dazu zwingt, über Alternativen nachzudenken und eine schwierige Entscheidung ohne perfekte Antwort zu treffen. Das ist Design.

Anti-Pattern sind jedoch in einer völlig anderen Klasse. Sie wollen tatsächlich Anti-Muster aktiv vermeiden. Deswegen ist der Name Anti-Pattern so umstritten.

Um zu Ihrer ursprünglichen Frage zurückzukommen:
"Benutze ich Designmuster?", Ja!
"Habe ich mich aktiv an Design Patterns orientiert?", Nein.


Jedes große Programm, das gut geschrieben ist, verwendet Entwurfsmuster, selbst wenn sie nicht als solche benannt oder erkannt werden. Das ist was Designmuster sind, Designs, die immer wieder und natürlich vorkommen. Wenn du eine hässliche API verwendest, wirst du wahrscheinlich eine Facade implementieren, um sie zu bereinigen. Wenn Sie Messaging zwischen Komponenten haben, die Sie entkoppeln müssen, können Sie Observer . Wenn Sie mehrere austauschbare Algorithmen haben, können Sie am Ende Strategy .

Es lohnt sich, die Designmuster zu kennen, weil Sie sie eher erkennen und dann schneller zu einer sauberen Lösung konvergieren. Aber selbst wenn Sie sie überhaupt nicht kennen, werden Sie sie schließlich erstellen (wenn Sie ein anständiger Programmierer sind).

Und natürlich, wenn Sie eine moderne Sprache verwenden, werden Sie wahrscheinlich gezwungen sein, sie für einige Dinge zu verwenden, weil sie in die Standardbibliotheken gebacken sind.


Ja, Designmuster oder abstrakte Muster sind Teil meines Lebens, wo ich schaue, fange ich an, sie zu sehen. Deshalb bin ich von ihnen umgeben. Aber, wie Sie wissen, ist wenig Wissen eine gefährliche Sache. Daher empfehle ich Ihnen dringend, GoF-Buch zu lesen.

Eines der Hauptprobleme bei Design Patterns ist, dass die meisten Entwickler einfach nicht auf die Idee kommen oder nicht an sie glauben. Und die meiste Zeit streiten sie über die Variablen, Schleifen oder Schalter. Aber ich glaube fest daran, dass, wenn Sie die Mustersprache nicht sprechen, Ihre Software nicht weit gehen wird und Sie sich in einem Wartungsalbtraum wiederfinden werden.

Wie Sie wissen, ist Anti-Muster auch eine gefährliche Sache und es passiert, wenn Sie wenig Erfahrung mit Design-Mustern haben. Und das Refactoring von Anti-Patterns ist viel schwieriger. Als empfehlenswertes Buch zu diesem Problem lesen Sie bitte "AntiPatterns: Refactoring Software, Architekturen und Projekte in der Krise".


Ja. Designmuster können bei entsprechender Anwendung wunderbar sein. Wie Sie bereits erwähnten, verwende ich jetzt Model-View-Controller (MVC) für alle meine Webprojekte. Es ist ein sehr verbreitetes Muster im Webspace, das serverseitigen Code viel sauberer und gut organisiert macht.

Darüber hinaus sind hier einige andere Muster, die nützlich sein können:

  • MVVM (Model-View-ViewModel): ein ähnliches Muster wie MVC; Wird für WPF- und Silverlight-Anwendungen verwendet.

  • Zusammensetzung: Ideal, wenn Sie eine Hierarchie von Objekten verwenden müssen.

  • Singleton: Eleganter als Globals zum Speichern von Elementen, die wirklich nur eine einzige Instanz benötigen. Wie Sie erwähnt haben, ist ein einfaches Muster, aber es hat seine Verwendung.

Es ist erwähnenswert, dass ein Designmuster auch einen Mangel an Sprachmerkmalen und / oder Unzulänglichkeiten in einer Sprache hervorheben kann. Zum Beispiel sind Iteratoren jetzt in neueren Sprachen integriert.

Im Allgemeinen sind Designmuster sehr nützlich, aber Sie sollten sie nicht überall verwenden. genau dort, wo sie für Ihre Bedürfnisse passen.





design-patterns