8

Dies ist wahrscheinlich eine neue Frage, da ich neu zu entwerfen Muster bin, aber ich sah auf die Template-Methode und Strategie DPs und sie scheinen sehr ähnlich. Ich kann die Definitionen lesen, die UMLs untersuchen und Code-Beispiele auschecken, aber für mich scheint es, als ob das Strategie-Muster nur das Vorlagen-Muster-Muster verwendet, aber nur zufällig in Objekt und Objekt eingibt (d. H. Komposition).Template-Methode und Strategie-Design-Muster

Und für diese Angelegenheit scheint die Template-Methode nur eine einfache OO-Vererbung zu sein.

Fehle mir ein wichtiger Aspekt ihrer Unterschiede? Fehle mir etwas an der Template-Methode, die es mehr als nur eine einfache Vererbung macht?

Hinweis: Es gibt einen früheren Post zu diesem Thema (672083), aber es ist mehr auf wann es zu verwenden, die Art von mir hilft es ein bisschen mehr, aber ich möchte meine Gedanken über die Muster selbst gültig.

Antwort

9

Es kommt im Grunde alles auf Semantik an. Das Strategie-Pattern erlaubt es Ihnen, einen bestimmten Algorithmus/eine bestimmte Prozedur (die Strategie) an ein anderes Objekt zu übergeben und dieses zu verwenden. Die Template-Methode erlaubt es Ihnen, bestimmte Aspekte eines Algorithmus zu überschreiben und dabei bestimmte Aspekte gleich zu halten (Reihenfolge beibehalten und Dinge, die immer am Anfang und am Ende gemacht werden, zum Beispiel ... die 'Vorlage') während Vererbung eine Möglichkeit ist, IS-A-Beziehungen in Datenmodellen zu modellieren.

Natürlich können Template-Methoden am einfachsten mit Vererbung implementiert werden (obwohl Sie composition genauso verwenden könnten, besonders wenn Sie functors haben), und Strategie-Patterns sind häufig auch Template-Methoden, aber wo die Syntax ähnlich ist, sind die Bedeutungen sehr verschieden .

+0

+1 für eine gute kurze Erklärung und für die Erwähnung der Zusammensetzung über Vererbung –

0

Strategy Das Entwurfsmuster
bietet eine Möglichkeit, den Algorithmus eines Objekts dynamisch zur Laufzeit
(via Objektzusammensetzungs) auszutauschen.

Zum Beispiel die Berechnung von Preisen in einem Auftragsverarbeitungssystem.
Um Preise auf verschiedene Arten zu berechnen, können verschiedene Preisalgorithmen unterstützt werden, so dass welcher Algorithmus zu Laufzeit ausgewählt werden kann (injiziert) und dynamisch ausgetauscht werden kann.

Die Template Method Entwurfsmuster
bietet eine Möglichkeit, um einige Teile des Verhaltens einer Klasse neu definiert statisch zur Compile-Zeit
(via Subklassifizieren).

Zum Beispiel das Design wiederverwendbarer Anwendungen (Frameworks).
Die Anwendung implementiert die gemeinsamen (invariant) Teile des Verhaltens so dass Benutzer der Anwendung Subklassen schreiben kann die Variantenteile neu zu definieren, um ihre Bedürfnisse anzupassen. Aber Subclass Writer sollten nicht in der Lage sein, die invarianten Teile von das Verhalten noch die Verhaltensstruktur (die Struktur der invarianten und varianten Teile) zu ändern.

Verwandte Themen