Frage

Mein Lehrer ist wirklich gut und ich neige dazu, seine Punkte zu verstehen, aber dieser geht nur über meinen Kopf. Er erklärt die Vorlagenmethode in zwei Varianten;
- Vereinigung: Die Standardvariante besteht aus einer abstrakten Klasse mit einigen abstrakten Methoden, die die varianten Teile des ansonsten festen Algorithmus definieren.
- Trennung: Seine eigene Variante (glaube ich?) Wo eine Klasse den Templatemethod () enthält und die Delegation an eine Schnittstelle verwendet, um die Teile des Algorithmus zu variieren, was mir genau wie das Strategiemuster aussieht.

Kann jemand sehen, was sein Standpunkt ist und wie sich die "Trennungsvariante" vom Strategiemuster unterscheidet?
Ich habe ein Bild mit den beiden Mustern aus seinem Buch angehängt (das noch nicht veröffentlicht wird).

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

War es hilfreich?

Lösung

Ich habe noch nie von einer "Separationsvariante" des Vorlagenmethodenmusters gehört und bin damit einverstanden, dass es der Strategie sehr ähnlich aussieht. Auch wenn es einige Begründungen über die Eigentümerschaft der Schnittstelle gibt oder wie Sie sie aus einer Kundenperspektive aufrufen, finde ich kaum einen Vorteil, um sie unterschiedliche Muster zu betrachten.

Andere Tipps

Bei allgemeiner Verwendung verwendet die Vorlagenmethode die Methode Unterklassen Um das unterschiedliche Verhalten zu liefern. Mit Strategie, Sie injizieren ein Algorithmusobjekt. In Ihrem Beispiel gibt es keine nützliche Unterscheidung zwischen Vorlage (Trennung) und Strategie. Angesichts des Alters der Gamma et al In Buch, die diese neue Terminologie mit angemessener Erläuterung des Unterschieds einführen, wird wahrscheinlich einfach Verwirrung verursacht, wenn Sie mit anderen Programmierern sprechen. Vermeiden Sie es außerhalb Ihres Unterrichts.

Mit der Vorlage können Sie in der Basisklasse auf geschützte Mitglieder zugreifen. Mit der Strategie können Sie Ihre Algorithmen entwickeln, die mehr aus den Objekten gekoppelt sind, die sie verwenden, und ermöglicht es Ihnen, denselben Algorithmus in viele verschiedene Objekttypen zu injizieren.

Vorlagenmethode:

  1. Es ist ein Verhaltensdesignmuster
  2. Es wird verwendet, um einen Methodenstub zu erstellen und einige der Implementierungsschritte in die Unterklassen zu verschieben. Es besteht aus bestimmten Schritten, deren Reihenfolge festgelegt ist.
  3. Es definiert die Schritte zur Ausführung eines Algorithmus und kann eine Standardimplementierung liefern, die für alle oder einige der Unterklassen üblich ist.
  4. Superklass -Vorlagenmethode ruft Methoden aus Unterklassen auf,

Strategiemuster:

  1. Es ist ein Verhaltensmuster
  2. Es basiert auf Delegation
  3. Es ändert das Eingeweide des Objekts, indem es das Methodenverhalten ändert
  4. Es wird verwendet, um zwischen Algorithmen zu wechseln
  5. Es ändert das Verhalten des Objekts zur Laufzeit. Ein Algorithmus wird aus einer Algorithmusfamilie ausgewählt.

Grundlegende Unterschiede.

  1. Vorlagenmethode Verwendet Vererbung und Strategie Verwendet Komposition
  2. Das Vorlagenmethode Implementiert von der Basisklasse sollte nicht außer Kraft gesetzt werden. Auf diese Weise wird die Struktur des Algorithmus von der Superklasse gesteuert, und die Details werden in den Unterschichten implementiert
  3. Strategie Kapuliert den Algorithmus hinter einer Schnittstelle, die uns die Fähigkeit ermöglicht, den Algorithmus zur Laufzeit zu ändern. Mehrere Strategien bieten eine andere Implementierung als Schnittstelle.

Schauen Sie sich Journaldev an Vorlagenmethode und Strategie Artikel zum besseren Verständnis zusammen mit Quellherstellung Artikel.

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