Wann welches Designmuster verwenden? [geschlossen]

104

Ich mag Designmuster sehr, aber ich finde es schwierig zu sehen, wann ich eines anwenden kann. Ich habe viele Websites gelesen, auf denen Designmuster erklärt werden. Ich verstehe die meisten von ihnen, aber ich finde es schwierig, ein Muster in meinen eigenen Situationen zu erkennen.

Deshalb stelle ich diese Frage. Gibt es Richtlinien / Alarmglocken, wann welches Entwurfsmuster verwendet werden soll?

Wenn Sie beispielsweise eine switch-Anweisung ausführen, um zu bestimmen, welches Objekt Sie erstellen müssen, möchten Sie wahrscheinlich das Factory-Entwurfsmuster verwenden. Die switch-Anweisung ist in diesem Fall also eine 'Alarmglocke', um das Factory-Muster zu verwenden.

Kennen Sie also mehr Alarmglocken, um ein Entwurfsmuster zu bestimmen?

Martijn
quelle
6
Normalerweise enthalten die Musterbeschreibungen, die ich sehe, eine Beschreibung der Situationen, in denen Sie dieses Entwurfsmuster wünschen würden.
R. Martinho Fernandes

Antworten:

99

Normalerweise ist der Prozess umgekehrt. Suchen Sie nicht nach Situationen, in denen Entwurfsmuster verwendet werden sollen, sondern nach Code, der optimiert werden kann. Wenn Sie Code haben, der Ihrer Meinung nach nicht richtig strukturiert ist. Versuchen Sie, ein Entwurfsmuster zu finden, das das Problem löst.

Entwurfsmuster sollen Ihnen bei der Lösung struktureller Probleme helfen. Entwerfen Sie Ihre Anwendung nicht nur, um Entwurfsmuster verwenden zu können.

Joep Killaars
quelle
23
Nicht nur strukturelle Probleme, sondern auch Verhaltens- und Kreationsprobleme.
DevDemon
1
Entwurfsmuster können den Entwicklungsprozess beschleunigen, indem sie getestete, bewährte Entwicklungsparadigmen bereitstellen. Für ein effektives Software-Design müssen Probleme berücksichtigt werden, die möglicherweise erst später in der Implementierung sichtbar werden. Die Wiederverwendung von Entwurfsmustern hilft, subtile Probleme zu vermeiden, die große Probleme verursachen können, und verbessert die Lesbarkeit des Codes für Codierer und Architekten, die mit den Mustern vertraut sind.
SaddamBinSyed
5

Lernen Sie sie und langsam können Sie nachvollziehen und herausfinden, wann Sie sie verwenden müssen. Beginnen Sie mit etwas Einfachem wie dem Singleton-Muster :)

Wenn Sie eine Instanz eines Objekts und nur EINE erstellen möchten. Sie verwenden das Singleton-Muster. Angenommen, Sie erstellen ein Programm mit einem Optionsobjekt. Sie wollen nicht mehrere davon, das wäre dumm. Singleton stellt sicher, dass es nie mehr als einen geben wird. Das Singleton-Muster ist einfach, wird häufig verwendet und ist sehr effektiv.

Peter Rasmussen
quelle
17
Der Singleton ist nicht wirklich für den Fall gedacht, dass Sie nur eine Instanz benötigen . Singleton ist , wenn Sie benötigen Grenze auf eine Instanz. Wenn Sie nur eine Instanz benötigen , können Sie versuchen, einfach nur eine Instanz zu erstellen und zu verwenden.
R. Martinho Fernandes
Auch wenn Singleton an einigen Stellen sehr nützlich und notwendig ist, ist es auch ein sehr einfach zu implementierendes Muster, wenn es nicht notwendig ist. Wie Sie hier andeuten und wie Fernandes betonte, brauchen Sie es wahrscheinlich nicht. Tatsächlich ist die Verwendung eines Singleton-Musters ein gutes Zeichen für mögliche (wahrscheinlich) Code-Gerüche. Die Verwendung für eine Serviceklasse ist höchstwahrscheinlich ein Codegeruch. Klingt so, als ob Sie DI brauchen, nicht Singleton. Einige Leute benutzen sie so. Besonders für kleinen (unwichtigen) Code oder POCs. Aber wie gesagt, es gibt einige effektive Anwendungen. Finden Sie keinen einfachen Weg, etwas zu tun und tun Sie es einfach.
Suamere
4

Ich stimme @Peter Rasmussen voll und ganz zu.

Entwurfsmuster bieten eine allgemeine Lösung für häufig auftretende Entwurfsprobleme.

Ich möchte, dass Sie dem folgenden Ansatz folgen.

  1. Verstehe die Absicht jedes Musters
  2. Verstehen Sie die Checkliste oder den Anwendungsfall jedes Musters
  3. Überlegen Sie sich eine Lösung für Ihr Problem und prüfen Sie, ob Ihre Lösung in die Checkliste eines bestimmten Musters fällt
  4. Wenn nicht, ignorieren Sie einfach die Entwurfsmuster und schreiben Sie Ihre eigene Lösung.

Nützliche Links:

Quellenherstellung : Erklärt Absicht , Struktur und Checkliste auf wunderbare Weise in mehreren Sprachen, einschließlich C ++ und Java

wikipedia : Erklärt Struktur, UML-Diagramm und Arbeitsbeispiele in mehreren Sprachen, einschließlich C # und Java.

Die Checkliste und die Faustregeln in jedem Designmuster für die Quellenherstellung enthalten die von Ihnen gesuchte Alramglocke.

Ravindra Babu
quelle