Frage

Welche Durchdringung haben Designmuster in der realen Welt?Nutzen Sie sie in Ihrer täglichen Arbeit – besprechen Sie mit Ihren Kollegen, wie und wo Sie sie anwenden können – oder bleiben sie eher ein akademisches Konzept?

Bieten sie Ihrem Job tatsächlich einen echten Mehrwert?Oder sind sie nur etwas, worüber die Leute reden, um klug zu klingen?

Notiz:Ignorieren Sie für den Zweck dieser Frage „einfache“ Entwurfsmuster wie Singleton.Ich spreche davon, Ihren Code so zu gestalten, dass Sie ihn nutzen können Model View Controller, usw.

War es hilfreich?

Lösung

Jedes große, gut geschriebene Programm verwendet Entwurfsmuster, auch wenn sie nicht als solche benannt oder erkannt werden.Das sind Designmuster, Designs, die wiederholt und wiederholt werden natürlich geschehen.Wenn Sie mit einer hässlichen API interagieren, werden Sie wahrscheinlich eine implementieren Facade um es aufzuräumen.Wenn Sie Nachrichten zwischen Komponenten haben, die Sie entkoppeln müssen, werden Sie diese möglicherweise verwenden Observer.Wenn Sie über mehrere austauschbare Algorithmen verfügen, werden Sie diese möglicherweise verwenden Strategy.

Es lohnt sich, die Entwurfsmuster zu kennen, da Sie sie mit größerer Wahrscheinlichkeit erkennen und dann schneller zu einer sauberen Lösung gelangen.Aber selbst wenn Sie sie überhaupt nicht kennen, werden Sie sie irgendwann erstellen (wenn Sie ein guter Programmierer sind).

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

Andere Tipps

Meiner Meinung nach ist die Frage:"Tust du verwenden Designmuster?“ allein ist ein wenig fehlerhaft, da die Antwort allgemein JA lautet.

Lassen Sie es mich erklären: Wir Programmierer und Designer verwenden alle Designmuster ...wir merken es einfach nicht immer.Ich weiß, das klingt klischeehaft, aber man folgt nicht Mustern, Muster kommen zu einem.Sie entwerfen etwas, es könnte wie ein bestehendes Muster aussehen, Sie benennen es so, damit jeder versteht, wovon Sie sprechen, und die Begründung für Ihre Designentscheidung stärker ist, da Sie wissen, dass sie besprochen wurde bis zum Überdruss Vor.

Ich persönlich verwende Muster als Kommunikationsmittel.Das ist es.Es handelt sich nicht um Designlösungen, es handelt sich nicht um Best Practices, es handelt sich nicht um Werkzeuge in einem Werkzeugkasten.

Verstehen Sie mich nicht falsch, wenn Sie ein Anfänger sind, zeigen Ihnen Bücher über Muster, wie eine Lösung am besten gelöst werden kann, indem man ihre Muster verwendet und nicht ein anderes fehlerhaftes Design.Sie werden wahrscheinlich aus der Übung lernen.Allerdings muss man sich darüber im Klaren sein, dass das nicht bedeutet, dass jede Situation ein entsprechendes Muster braucht, um sie zu lösen.Jede Situation hat hier und da eine Eigenart, die Sie dazu zwingt, über Alternativen nachzudenken und eine schwierige Entscheidung zu treffen, auf die es keine perfekte Antwort gibt. Das ist Design.

Anti-Pattern gehören jedoch zu einer völlig anderen Klasse.Du eigentlich wollen Zu aktiv Vermeiden Sie Anti-Muster.Deshalb ist der Name Anti-Pattern so umstritten.

Um auf Ihre ursprüngliche Frage zurückzukommen:
„Verwende ich Designmuster?“, Ja!
„Neige ich mich aktiv zu Designmustern?“, Nein.

Ja.Designmuster können wunderbar sein, wenn sie richtig eingesetzt werden.Wie Sie bereits erwähnt haben, verwende ich jetzt Model-View-Controller (MVC) für alle meine Webprojekte.Es handelt sich um ein im Webspace sehr verbreitetes Muster, 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.

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

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

Es ist erwähnenswert, dass ein Entwurfsmuster auch einen Mangel an Sprachfunktionen und/oder Mängel in einer Sprache hervorheben kann.Beispielsweise sind Iteratoren jetzt als Teil neuerer Sprachen integriert.

Im Allgemeinen sind Entwurfsmuster recht nützlich, Sie sollten sie jedoch nicht überall verwenden.genau dort, wo sie gut zu Ihren Bedürfnissen passen.

Ich versuche es, ja.Sie tragen tatsächlich zur Wartbarkeit und Lesbarkeit Ihres Codes bei.Es gibt jedoch Leute, die sie missbrauchen, normalerweise (nach dem, was ich gesehen habe), indem sie ein System in ein Muster zwingen, das nicht existiert.

Ich versuche, Muster zu verwenden, wenn sie anwendbar sind.Ich finde es irgendwie traurig zu sehen, dass Entwickler Designmuster nur zum Spaß in Code implementieren.Für die richtige Aufgabe können Entwurfsmuster jedoch sehr nützlich und leistungsstark sein.

Es gibt viele Designmuster, die über das Einfache hinausgehen und in der „realen Welt“ verwendet werden.Ein gutes Beispiel: Stackoverflow verwendet das Model View Controller Pattern.Ich habe Class Factories mehrfach in Projekten für meinen Arbeitgeber eingesetzt und habe auch viele bereits geschriebene Projekte gesehen, in denen sie zum Einsatz kamen.

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

Ja, das passiert normalerweise, wenn wir anfangen, etwas zu entwerfen, und dann bemerkt jemand, dass es einem vorhandenen Muster ähnelt.Dann werfen wir einen Blick darauf und sehen, wie es uns helfen würde, unser Ziel zu erreichen.

Wir verwenden auch Muster, die nicht dokumentiert sind, aber häufig beim Entwerfen entstehen.

Allerdings nutzen wir sie nicht oft.

Ja, in einer Codebasis, mit der ich täglich arbeite, werden unter anderem Factory, Chain of Responsibility, Command, Proxy, Visitor und Observer verwendet.Was MVC angeht, scheint diese Seite es recht gut zu nutzen, und die Entwickler konnten nicht genug Gutes dazu sagen neuester Podcast.

Ja, ich verwende viele bekannte Entwurfsmuster, aber am Ende baue ich auch Software, bei der ich später herausfinde, dass sie ein „benanntes“ Entwurfsmuster verwendet.Die elegantesten, wiederverwendbaren Designs könnte man als „Muster“ bezeichnen.Es ähnelt stark Tanzbewegungen.Wir alle kennen den Walzer und den 2-Step, aber nicht jeder hat einen Namen für „Bump and Scoot“, obwohl die meisten von uns es tun.

MVC ist sehr bekannt, daher verwenden wir tatsächlich häufig Designmuster.Wenn Sie nun nach den Gang-of-Four-Mustern fragen, gibt es mehrere, die ich verwende, weil andere Betreuer das Design kennen und wissen, worauf wir im Code hinarbeiten.Es gibt jedoch einige, die für das, was wir tun, ziemlich unklar bleiben. Wenn ich also eines verwende, kann ich nicht alle Vorteile eines Musters nutzen.

Sind sie wichtig, ja, weil sie Ihnen die Möglichkeit geben, schnell, effizient und allgemein akzeptiert über Software-Design zu sprechen?Können Sie bessere kundenspezifische Lösungen entwickeln, na ja (irgendwie)?

Die ursprünglichen GoF-Muster wurden aus dem Produktionscode übernommen, sodass katalogisiert wurde, was bereits in freier Wildbahn verwendet wurde.Sie sind keine rein oder auch nur überwiegend akademische Angelegenheit.

Ich finde das MVC-Muster wirklich nützlich, um Ihre Modelllogik zu isolieren, die dann ohne großen Aufwand wiederverwendet oder bearbeitet werden kann.Es hilft auch dabei, Ihre Klassen zu entkoppeln und Unit-Tests zu vereinfachen.Ich habe darüber geschrieben kürzlich (Ja, schamloser Plug hier...)

Außerdem habe ich kürzlich ein Factory-Muster aus einer Basisklasse verwendet, um die richtige DataContext-Klasse zu generieren und zurückzugeben, die ich im laufenden Betrieb benötigte LINQ.

Brücken werden verwendet, wenn versucht wird, zwei verschiedene Technologien zusammenzukleben (z. B Kakao und Rubin auf dem Mac zum Beispiel)

Ich stelle jedoch fest, dass ich jedes Mal, wenn ich ein Muster umsetze, daran arbeite, dass ich vorher davon wusste.Im Allgemeinen muss ich mir etwas mehr Gedanken darüber machen, da ich das ursprüngliche Muster leicht modifizieren muss, um es meinen Bedürfnissen anzupassen.

Man muss nur aufpassen, dass man nicht und wird Architekturastronaut!

Ja, Entwurfsmuster werden größtenteils in der realen Welt verwendet – und zwar täglich von vielen Menschen, mit denen ich zusammenarbeite.

Meiner Meinung nach besteht der größte Wert von Designmustern darin, dass sie eine universelle Hochsprache bieten, mit der Sie anderen Programmierern Softwaredesign vermitteln können.

Anstatt Ihre neue Klasse beispielsweise als „Dienstprogramm, das eine von mehreren anderen Klassen basierend auf einer Kombination von Eingabekriterien erstellt“ zu beschreiben, können Sie einfach sagen, dass es sich um ein Dienstprogramm handelt „Abstrakte Fabrik“ und jeder versteht sofort, wovon Sie sprechen.

Ja, Designmuster oder abstrakte Muster sind Teil meines Lebens. Wo ich hinschaue, 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, das GoF-Buch zu lesen.

Eines der Hauptprobleme bei Entwurfsmustern ist, dass die meisten Entwickler einfach keine Ahnung davon haben oder nicht an sie glauben.Und meistens streiten sie sich über die Variablen, Schleifen oder Schalter.Aber ich bin fest davon überzeugt, dass Ihre Software nicht weit kommen wird und Sie sich in einem Wartungsalbtraum wiederfinden, wenn Sie die Mustersprache nicht beherrschen.

Wie Sie wissen, ist Anti-Pattern auch eine gefährliche Sache und passiert, wenn Sie wenig Fachwissen über Designmuster haben.Und das Refactoring von Anti-Patterns ist viel schwieriger.Als empfohlenes Buch zu diesem Problem lesen Sie bitte „AntiPatterns:Refactoring von Software, Architekturen und Projekten in der Krise“.

Ja.

Wir nutzen sie sogar in meinem aktuellen Job:Mainframe-Codierung mit COBOL und PL/I.

Bisher habe ich Adaptor, Visitor, Facade, Module, Observer und etwas gesehen, das Composite und Iterator sehr nahe kommt.Aufgrund der Natur der Sprachen werden hauptsächlich Strukturmuster verwendet.Außerdem bin ich mir nicht immer sicher, ob die Leute, die sie verwenden, dies bewusst tun :D

Ich verwende unbedingt Designmuster.An diesem Punkt halte ich MVC für selbstverständlich als Entwurfsmuster.Der Hauptgrund dafür, dass ich sie verwende, ist, dass ich bescheiden genug bin zu wissen, dass ich wahrscheinlich nicht die erste Person bin, die auf ein bestimmtes Problem stößt.Ich beginne einen Code selten mit dem Wissen, welches Muster ich verwenden werde.Ich beobachte den Code ständig, um zu sehen, ob er sich auf natürliche Weise zu einem vorhandenen Muster entwickelt.

Mir gefällt es auch sehr gut Martin Fowlers Muster der Unternehmensanwendungsarchitektur.Wenn ein Problem oder eine Aufgabe auftaucht, blättere ich zum entsprechenden Abschnitt (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 anhand der Erfahrungen anderer zu erkennen, welchen langfristigen Weg mein Code wahrscheinlich nehmen wird.Am Ende treffe ich viel bessere Entscheidungen.

Designmuster spielen definitiv eine große Rolle in all meinen „Zukunftsideen“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top