Konkrete Klassen können alle Schritte überschreiben, jedoch nicht die Vorlagenmethode selbst. Die Vorlagenmethode ist ein Verhaltensentwurfsmuster, das das Skelett eines Algorithmus in der Superklasse definiert, aber Unterklassen bestimmte Schritte des Algorithmus überschreiben lässt, ohne seine Struktur zu ändern. Erstellen Sie die abstrakte Basisklasse, und deklarieren Sie die Vorlagenmethode und eine Reihe abstrakter Methoden, die die Schritte des Algorithmus darstellen. Umreißen Sie die Struktur des Algorithmus in der Vorlagenmethode, indem Sie entsprechende Schritte ausführen. Erwägen Sie, die Vorlagenmethode endgültig zu machen, um zu verhindern, dass Unterklassen sie überschreiben. Das Muster der Vorlagenmethode, um ein sauberes Design zu erzielen. Der von der Basisklasse bereitgestellte Algorithmus ist zur Änderung geschlossen, kann aber von Unterklassen erweitert werden. Damit erfüllt Ihr Design das Open-Closed-Prinzip. Das Muster hilft auch bei der Umsetzung des Hollywood-Prinzips («Rufen Sie uns nicht an, wir rufen Sie an»). Wenn Sie einen solchen Algorithmus in eine Vorlagenmethode umwandeln, können Sie die Schritte mit ähnlichen Implementierungen auch in eine Superklasse hochziehen, wodurch Codeduplizierungen vermieden werden. Code, der zwischen Unterklassen variiert, kann in Unterklassen verbleiben.

Swiss Cross ist einfach zu DIY. Da es so einfach und symmetrisch ist, eignet sich das Schweizer Grundkreuz gut für DIY-Projekte, die ein handgeschnittenes, handbemaltes oder handgeklebtes Muster benötigen. Einige meiner Favoriten sind diese Ammer von Blue Bird Vintage, und das Schweizer Kreuz bemalt Herz Leinwand von Hello Lidy. Einzigartige Vollfeld-Nanolithographie-Expositionssysteme für berührungslose Musterung von Wafern Ich weiß, dass dieses Beispiel nicht wirklich das ist, was Sie in einem realen Projekt sehen werden, aber ich hoffe, dass es Ihnen geholfen hat, das Muster der Vorlagenmethode zu verstehen. Sie finden den Quellcode auf GitHub. Verwenden Sie das Muster der Vorlagenmethode, wenn Sie Clients nur bestimmte Schritte eines Algorithmus erweitern lassen möchten, nicht jedoch den gesamten Algorithmus oder seine Struktur. Die Abstrakte Klasse deklariert Methoden, die als Schritte eines Algorithmus fungieren, sowie die eigentliche Vorlagenmethode, die diese Methoden in einer bestimmten Reihenfolge aufruft. Die Schritte können entweder als abstrakt deklariert werden oder eine Standardimplementierung haben. Die Implementierung von template_method() ist: aufrufe step_one(), aufrufe step_two() und aufrufe step_three().

step_two() ist eine «Hook»-Methode – ein Platzhalter. Sie wird in der Basisklasse deklariert und dann in abgeleiteten Klassen definiert. Frameworks (große Wiederverwendungsinfrastrukturen) verwenden die Vorlagenmethode viel. Der gesamte wiederverwendbare Code wird in den Basisklassen des Frameworks definiert, und dann können Clients des Frameworks Anpassungen definieren, indem sie nach Bedarf abgeleitete Klassen erstellen. Weiß jemand anderes mehr über die Ursprünge des Musters? Der Template-Methodenansatz kann im Massenwohnungsbau verwendet werden. Der architektonische Plan für den Bau eines Standardhauses kann mehrere Erweiterungspunkte enthalten, die es einem potenziellen Eigentümer veranlassen würden, einige Details des resultierenden Hauses anzupassen. Ich beschloss, bei Google einzutauchen und mir einen Crashkurs in einem der beliebtesten Muster im Design heute zu geben. Hier ist, was Sie wissen müssen: Eine ist eine Aussage; zwanzig ist ein Trend. Nachdem ich dieses Muster in tausend verschiedenen Räumen (einschließlich des Raumes von Jorid Kvam von NOE Blog, oben) auftauchen sah, musste ich einige Beinarbeiten machen.

Was ist es? Und warum sehe ich es überall? Ein Nachteil ist, dass die Schritte des Algorithmus bereits bekannt sein müssen, wenn das Muster angewendet wird. Daher eignet sich das Muster der Vorlagenmethode hervorragend für die Wiederverwendung, ist jedoch nicht so flexibel wie z. B. das Strategiemuster. In diesem Beispiel stellt das Muster der Vorlagenmethode ein «Skelett» für verschiedene Zweige künstlicher Intelligenz in einem einfachen Strategievideospiel bereit. Großflächige Nanomuster von PHABLE™ und E-beam A echtes «Swiss Cross» haben sehr spezifische Dimensionen.