351 Stimmen

Wie studiert man Entwurfsmuster?

Ich habe etwa 4-5 Bücher über Entwurfsmuster gelesen, aber ich habe immer noch nicht das Gefühl, dass ich mich der Zwischenstufe in Entwurfsmustern genähert habe.

Wie sollte ich mich mit Entwurfsmustern beschäftigen?

Gibt es ein gutes Buch über Entwurfsmuster?

Ich weiß, dass dies nur mit Erfahrung möglich ist, aber es muss doch eine Möglichkeit geben, diese zu meistern?

28voto

utku_karatas Punkte 5798

Üben, üben, üben. Ich denke, dass 4 bis 5 Bücher sogar eine übertriebene Leseübung sind, wenn man nicht ein wenig übt. Der beste Weg, dies zu tun, ist, glaube ich, zu beginnen Refactoring Ihrer laufenden Projekte unter Verwendung der Muster. Oder wenn Sie keine Projekte haben, an denen Sie aktiv arbeiten, dann Machen Sie es einfach auf Ihre eigene Art und Weise und versuchen Sie es dann mit Refactoring nach Mustern .

Man kann sie nicht richtig einschätzen, wenn man die Probleme, die sie lösen, nicht selbst durchlebt hat. Und bitte denken Sie daran, dass sie keine Patentrezepte sind - Sie müssen sie nicht auswendig lernen und sich anstrengen, um sie spontan anzuwenden. Meine zwei Cent.

19voto

gtrak Punkte 5485

Stellen Sie sich diese Fragen:

Was tun sie?

Was wird entkoppelt/gekoppelt?

Wann sollten Sie sie einsetzen?

Wann sollten Sie sie nicht verwenden?

Welches fehlende Sprachmerkmal würde sie verschwinden lassen?

Welche technischen Schulden entstehen durch ihre Verwendung?

Gibt es einen einfacheren Weg, die Arbeit zu erledigen?

9voto

Phillip Ngan Punkte 13896

Haben Sie "Design Patterns Explained" von Allan Shalloway gelesen.

Dieses Buch unterscheidet sich stark von anderen Büchern über Entwurfsmuster, da es nicht so sehr ein Katalog von Mustern ist, sondern in erster Linie eine Methode zur Zerlegung eines Problemraums vorstellt, die sich leicht auf Muster abbilden lässt.

Probleme können in zwei Teile zerlegt werden: Dinge, die allgemein sind, und Dinge, die unterschiedlich sind. Wenn dies geschehen ist, ordnen wir die gemeinsamen Dinge einer Schnittstelle zu und die unterschiedlichen Dinge einer Implementierung. Im Grunde genommen fallen viele Muster unter dieses "Muster".

Im Strategiemuster beispielsweise werden die gemeinsamen Dinge als Kontext der Strategie ausgedrückt, und die variablen Teile werden als konkrete Strategien ausgedrückt.

Ich fand dieses Buch sehr anregend, ganz im Gegensatz zu anderen Musterbüchern, die für mich so spannend sind wie das Lesen eines Telefonbuchs.

8voto

Tim Punkte 19787

Ich habe festgestellt, dass es etwas schwierig ist, die Vorteile einiger Muster zu verstehen, bis man die Probleme, die sie lösen, und die anderen (schlimmeren) Wege, auf denen die Probleme umgesetzt wurden, kennt.

Außer den GOF- und POSA-Büchern habe ich keine anderen Bücher gelesen, so dass ich Ihnen keine anderen Empfehlungen geben kann. Man muss wirklich nur ein Verständnis für die Problembereiche haben, und ich denke, dass viele weniger erfahrene Entwickler die Vorteile von Mustern nicht zu schätzen wissen. Das ist keine Beleidigung für sie. Es ist viel einfacher, gute Lösungen anzunehmen, zu verstehen und zu schätzen, wenn man zuerst mit schlechten Alternativen kämpfen muss.

Viel Glück!

8voto

Joachim Sauer Punkte 290477

Es wurden schon viele gute Beispiele genannt. Ich möchte eines hinzufügen:

Sie werden falsch angewendet. Sie müssen das nicht absichtlich tun, es wird passieren, wenn Sie versuchen, sie in Ihrem anfänglichen Design-Pattern-Fit anzuwenden. Während dieser Zeit wird jedes einzelne Problem, das Sie sehen, genau einem Design-Muster zu entsprechen scheinen. Oft scheinen die Probleme aus irgendeinem Grund alle auf das gleiche Entwurfsmuster zu passen (Singelton ist ein Hauptkandidat dafür).

Du wendest das Muster an, und es wird gut sein. Und einige Monate später müssen Sie etwas am Code ändern und sehen, dass die Anwendung dieses bestimmten Musters nicht so klug war, weil Sie sich selbst in eine Ecke kodiert haben und Sie erneut refaktorisieren müssen.

Zugegeben, das ist nicht wirklich eine "Do-that-and-you'll-learn-it-in-21-Days"-Antwort, aber nach meiner Erfahrung ist es diejenige, die Ihnen am ehesten einen guten Einblick in die Materie gibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X