Ich bin ein verwirrter Neuling und Hobby-Programmierer, der versucht, dies in den Griff zu bekommen. Verzeihen Sie mir also, wenn meine Frage etwas falsch ist oder nicht viel Sinn ergibt.
Ich sehe viele Fragen zu SO, die sich um die Verwendung von Entwurfsmustern drehen, und ich frage mich, ob jemand über gute Ressourcen verfügt, um Entwurfsmuster kennenzulernen und zu implementieren. Ich verstehe die allgemeine Idee und weiß, wie / wann ich einige davon verwenden soll (Singletons, Factory-Methoden), aber ich weiß, dass ich etwas verpasse.
(Nur für den Fall, dass es darauf ankommt, meine bevorzugte Sprache ist C #, aber ich könnte aus Beispielen in anderen Sprachen lernen.)
quelle
Designmuster sind aus verschiedenen Gründen großartig:
Aber wenn Ihr Ziel nur darin besteht, Designmuster zu lernen, fehlen Ihnen wahrscheinlich die Grundlagen. Alle Entwurfsmuster basieren auf allgemeineren Prinzipien. Hohe Kohäsion, offenes geschlossenes Prinzip mit niedriger Kopplung, DRY, Liskov-Substitutionsprinzip usw. Für diese Grundlagen würde ich die folgenden Bücher in dieser Reihenfolge lesen:
Danach sind Sie bereit für die Grundgruppe der vier Entwurfsmuster
Der nächste Schritt:
Und denken Sie immer daran: Das Muster ist nicht das Ziel!
quelle
Ich möchte hinzufügen, dass das Design Patterns- Buch aus der "Gang of Four" eine Bibel für alle ist, die sich ernsthaft für Design Patterns interessieren.
quelle
Mein Tipp:
Lesen Sie viel über die Muster aus verschiedenen Quellen.
Der Versuch, so viele Muster wie möglich in den gesamten Code zu zwingen, den Sie schreiben, da dieser Punkt keine guten Ergebnisse liefert. Lassen Sie die Informationen stattdessen eine Weile in Ihrem Gehirn ruhen (lesen Sie: Monate).
Plötzlich werden Sie auf ein Problem oder einen Code stoßen und sich vage daran erinnern, dass Sie etwas gesehen haben, das als Lösung für dieses spezielle Problem funktionieren könnte. Jetzt ist es an der Zeit, die Details des Musters, an das Sie denken, nachzuschlagen und zu versuchen, es anzuwenden.
Das hat sowieso für mich funktioniert.
quelle
Designmuster
Diese Tutorial-Site enthält die folgenden Unterabschnitte
Diese Website enthält auch Anleitungen zu Anti-Patterns , UML und Refactoring .
quelle
Bruce Eckel hat ein Buch über Designmuster , obwohl es Java ist, ist es wie alle seine Bücher erstaunlich. Und das Beste ist, sie sind kostenlos!
quelle
C # 3.0-Entwurfsmuster für eine C # -Perspektive auf Entwurfsmuster.
(Quelle: oreilly.com )
quelle
Ein Einführungsbuch, das ich nützlich und gut geschrieben fand, ist Design Patterns Explained von Alan Shalloway und James Trott (Addison Wesley).
Beginnen Sie nicht mit dem Gang of Four- Buch, denn es ist keineswegs ein Einführungsbuch.
quelle
Ich würde empfehlen, einen Blick auf Jean Paul Boodhoos Quintologie (?) Zur Entmystifizierung von Designmustern auf DNRtv zu werfen. Die Videocasts berühren unter anderem Singleton, Abstract Factory - mit dem Unterschied, dass Sie ihm beim Codieren der Theorie beim Codieren zuschauen können. Gut, um an einem regnerischen Wochentag beim Mittagessen zu wachen.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
quelle
Eine Anmerkung zu den obigen Kommentaren.
Eine Kurzreferenz für GOF-Muster
Hier ist ein guter Ort, an dem Sie dofactory.com/patterns/patterns.aspx starten können. Dort finden Sie einen Link zu jedem Muster sowie entsprechende Implementierungen.
Denken Sie jedoch daran, dass dies GOF-Muster sind. Möglicherweise müssen Sie auch erweiterte Muster lesen und verstehen, sobald Sie über ausreichende Kenntnisse in OOAD verfügen. Head First Design Patterns ist ein guter Anfang, und nachdem Sie einige Fortschritte erzielt haben, entscheiden Sie sich für Martin Fowlers Enterprise Application Architecture Patterns.
Anwenden von Entwurfsmustern - Der Denkprozess
Ein weiterer Hauptaspekt - Das Anwenden von Designmustern ist genauso wichtig wie das bloße Kennen. Das Lesen dieser Artikel könnte Ihnen ebenfalls helfen.
Anwenden von Entwurfsmustern Teil I.
Anwenden von Entwurfsmustern Teil II
Hoffe das hilft
quelle
Head First Design Patterns ist gut, wie andere bereits erwähnt haben. Daneben natürlich das Originalbuch und C # Design Patterns. Es gibt auch gute Websites, die bereits erwähnt wurden.
Neben dem Selbstlernen empfehle ich dringend, eine Musterstudiengruppe in Ihrer Nähe zu gründen oder daran teilzunehmen . Siehe A Learning Guide To Design Patterns für Erklärungen und große Ordnung in die Muster zu studieren. Wir taten dies , und ich kann ehrlich sagen , dass ich nicht so viel verstehen würde , wie ich es jetzt tun. Ein wöchentliches Treffen mit anderen interessierten Personen hält Sie überraschend diszipliniert, wenn Sie etwas Abstraktes wie Designmuster lernen.
Viel Spaß beim Lernen!
quelle
Bevor ich Geld für Bücher ausgeben würde, würde ich die Seite mit den hervorragenden Designmustern von Wikipedia empfehlen . Auch für etwas anderes Google für "Design Pattern Screencasts" oder Suche nach "Design Patterns" auf YouTube . Wenn dieselben Informationen unterschiedlich dargestellt werden, fällt der Penny oft ab.
Das Gang of Four- Buch ist der endgültige Text zu den bekanntesten Mustern, aber nicht so einfach zu lesen und mit C ++ - Beispielen nicht jedermanns Favorit.
Der Text " Head First Design Patterns" ist weitaus zugänglicher, enthält jedoch nur eine Teilmenge der Gang of Four-Muster.
Das Wichtigste ist zu verstehen, wo und warum ein bestimmtes Muster nützlich ist. Durchsuchen Sie anschließend das Web nach Implementierungsbeispielen in der Sprache Ihrer Wahl und experimentieren Sie, bis Sie es "verstanden" haben. Verstehen Sie ein Muster, bevor Sie zum nächsten übergehen. Jeder versteht einige Muster besser als andere (und es gibt Hunderte von weniger bekannten).
Einfach weiter einstecken.
quelle
(Quelle: Amazon )
quelle
Muster der Unternehmensanwendungsarchitektur (Hardcover) von Martin Fowler
Refactoring to Patterns (Hardcover) von Joshua Kerievsky
Kontinuierliche Integration: Verbesserung der Softwarequalität und Risikominderung (Taschenbuch) von Paul Duval et al.
Jenseits der Softwarearchitektur: Erstellen und Aufrechterhalten erfolgreicher Lösungen (Taschenbuch) von Luke Hohmann
quelle
Entwurfsmuster sind wie jede Bibliotheksfunktion. Lesen Sie sie durch. Wenn ein Problem auftritt, befindet sich das Entwurfsmuster in Ihrer "Toolchest". Es gibt viele Bücher mit Designmustern, die alle nach den ursprünglichen Designmustern "Gang of Four" gestaltet sind.
Für jeden Programmierer sind das und das Refactoring-Buch von Fowler die absoluten Mindestanforderungen.
quelle
Eine sehr gute Website für Websites ist http://ajaxpatterns.org von einem der Entwickler der Ajaxian-Website
quelle
Das Original- Design Patterns- Buch ist ein Muss für alle Programmierer.
Es ist ein ausgezeichnetes Buch auf jeder Ebene: Layout, Klarheit, Einsicht, Tiefe. Es ist eines dieser großartigen Bücher, die Sie zuerst von Anfang bis Ende lesen und dann als Referenz verwenden, bis Sie es buchstäblich genau kennen.
Sie könnten auf der Wikipedia-Seite beginnen , sich aber auch das großartige Buch gönnen.
quelle
Anwenden von UML und Mustern von Craig Larman. Beginnen Sie mit den Grundlagen der Analyse, des Entwurfs und der Verwendung eines einfachen Fallszenarios. Führt die meisten Grundmuster auf einfache Weise ein.
quelle
Wenn Sie über Entwurfsmuster lesen, werden Sie feststellen, dass in Java einige davon implementiert sind.
Suchen Sie in der Quelle nach einem Framework, und Sie können Informationen zu Entwurfsmustern abrufen. Persönlich sehe ich nicht, dass sie perfekt zu meinem Code passen. Manchmal scheinen die Beispiele in Büchern und Tutorials ein wenig idealisiert zu sein, insbesondere für den Einzelcodierer.
Designmuster sind nichts für faule Programmierer.
quelle
Für mich und meine Kollegen studieren Design Pattern das folgende auf Pattern Study Group . Sie erstellen eine Liste aller Muster, die wir in der richtigen Reihenfolge lernen sollten, und haben auch die Eröffnungsfragen, die mehr Diskussionen in der Gruppe ermöglichen.
quelle
Ich schlage auch vor, dass Sie sich mit Refactoring to Patterns beschäftigen, sobald Sie Head First Design Patterns gelesen haben.
Hinweis: Die Codebeispiele befinden sich in Java, sollten jedoch den C # -Beispielen sehr ähnlich sein ...
quelle
Es macht für mich nicht allzu viel Sinn, wenn jemand mit sehr wenig Erfahrung zu tief in Designmuster eintaucht. Es ist toll zu wissen, dass es sie gibt, aber an diesem Punkt sollten Sie sich mehr auf andere Dinge konzentrieren, als nur etwas über Designmuster zu lernen.
Sie sind im Kontext eines Problems nützlich - als Konzept für einen neuen / Anfänger-Entwickler sind sie wirklich nicht zu praktisch, abgesehen davon, dass Sie sie nutzen sollten, wann und wo Sie können.
BEARBEITEN Zur Verdeutlichung: Viele Entwurfsmuster sind das Ergebnis von Problemen, die in einigen Bereichen auftreten. Von einem neuen Programmierer (IMO) ist kaum zu erwarten, dass er die Entwurfsmuster kennt, die für einige Probleme verwendet werden sollen. Gerade als wir in CS-Studien ein paar Algorithmen kennenlernen, müssen wir verstehen, was wir mit Mustern und ihren Vorteilen tun können, aber wenn eine Person noch eine Hallo-Welt baut oder stl entdeckt, besteht kaum praktischer Bedarf an Entwurfsmustern. Muster sind großartig. Aber sie sind nicht die Silberkugel.
(Weder war CASE (Tools), noch ist / war UML, noch ist SCRUM, weder ist TDD, noch STL, noch Java, noch XML usw.) Dies sind alles nur Aspekte unseres Berufs und diese Themen als das zweite zu behandeln Kommen ist naiv.
quelle
Muster umfassen das Vokabular, das Programmierer auf hoher Ebene verwenden, um über abstraktes Design zu sprechen. Wenn Sie eine abstrakte Lösung wiederverwenden, ist es hilfreich, sie mit Namen zu bezeichnen. Wenn Sie ein Muster erfinden, ist es professionell, ein wenig zu überprüfen, ob es noch keinen Namen hat. Wenn es benannt wurde, kann die Beschreibung hilfreich sein.
Nachdem Sie auch nur ein kleines bisschen codiert haben, werden Sie feststellen, dass Sie etwas Ähnliches schreiben, wie Sie es zuvor codiert haben. Dies ist ein Muster. Auch wenn es sich um ein winziges Muster handelt, ist es erwähnenswert. Gibt es ein besseres Muster? Sehen Sie bestimmte winzige Muster, die zusammenarbeiten, um ein größeres Problem zu lösen? Wenn Sie das nächste Mal ein größeres Problem lösen möchten, fällt Ihnen das gesamte Muster als einzelnes Stück ein. Das Ausarbeiten der detaillierten Codezeilen wird mechanisch.
Je mehr Sie Muster bemerken, desto einfacher wird die Programmierung und desto mehr werden Sie einige der größten und besten Muster schätzen, die von anderen Programmierern ausgearbeitet wurden. Versuchen Sie, das MVC-Muster zu beherrschen. Auf die eine oder andere Weise tauchen überall Variationen auf, selbst bei winzigen Designentscheidungen.
quelle
Wenn Sie das Konzept verstanden haben, gehen Sie den Eclipse-Quellcode oder das Eclipse-Design durch, viele wirklich gute Beispiele für diese Muster (keine Überraschung, Gamma war einer der Designer).
quelle
Ich habe Design Pattern-Artikel auf dieser Website als sehr einfach zu verstehen empfunden
Entwurfsmuster in C #
quelle