Arag Mustervorlagen

Das Muster der Vorlagenmethode schlägt vor, dass Sie einen Algorithmus in eine Reihe von Schritten aufschlüsseln, diese Schritte in Methoden umwandeln und eine Reihe von Aufrufen dieser Methoden in einer einzelnen Vorlagenmethode einfügen. Die Schritte können entweder abstrakt sein oder eine Standardimplementierung haben. Um den Algorithmus zu verwenden, muss der Client eine eigene Unterklasse bereitstellen, alle abstrakten Schritte implementieren und bei Bedarf einige der optionalen Schritte überschreiben (jedoch nicht die Vorlagenmethode selbst). Das Vorlagenmuster ist nützlich, wenn Sie mit automatisch generiertem Code arbeiten. Die Herausforderung bei der Arbeit mit generiertem Code besteht darin, dass Änderungen am Quellcode zu Änderungen im generierten Code führen. Wenn handschriftliche Änderungen am generierten Code vorgenommen wurden, gehen diese verloren. Wie sollte also der generierte Code angepasst werden? Verwenden Sie das Muster, wenn Sie mehrere Klassen haben, die fast identische Algorithmen mit einigen geringfügigen Unterschieden enthalten. Daher müssen Sie möglicherweise alle Klassen ändern, wenn sich der Algorithmus ändert. 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. Das Vorlagenmuster bietet eine Lösung. Wenn der generierte Code dem Vorlagenmethodenmuster folgt, ist der generierte Code alle eine abstrakte Superklasse.

Sofern handschriftliche Anpassungen auf eine Unterklasse beschränkt sind, kann der Codegenerator erneut ausgeführt werden, ohne dass das Risiko besteht, dass diese Änderungen überschrieben werden. Bei Verwendung bei der Codegenerierung wird dieses Muster manchmal als Generierungslückenmuster bezeichnet. [7] Dieses Muster ist ein Beispiel für die Umkehrung der Kontrolle, da der Code auf hoher Ebene nicht mehr bestimmt, welche Algorithmen ausgeführt werden sollen. Stattdessen wird zur Laufzeit ein Algorithmus auf niedrigerer Ebene ausgewählt. In diesem Beispiel stellt das Muster der Vorlagenmethode ein “Skelett” für verschiedene Zweige künstlicher Intelligenz in einem einfachen Strategievideospiel bereit. In der objektorientierten Programmierung ist die Vorlagenmethode eines der Verhaltensmuster, die von Gamma et al.[1] im Buch Design Patterns identifiziert werden. Die Vorlagenmethode ist eine Methode in einer übergeordneten Klasse, in der Regel eine abstrakte Superklasse, und definiert das Skelett einer Operation in Form einer Reihe von übergeordneten Schritten.