Ich würde sagen, Head First ist in dieser Charakterisierung einfach falsch.
Wikipedia definiert die Vorlagenmethode als:
In der Softwareentwicklung ist das Muster der Vorlagenmethode ein Verhaltensentwurfsmuster, das das Programmgerüst eines Algorithmus in einer Operation definiert und einige Schritte auf Unterklassen verschiebt.
(Es verweist dafür auf GoF.)
Die Factory-Methode ist definiert als:
Bei der klassenbasierten Programmierung ist das Factory-Methodenmuster ein Erstellungsmuster, das Factory-Methoden verwendet, um das Problem des Erstellens von Objekten zu lösen, ohne die genaue Klasse des zu erstellenden Objekts angeben zu müssen.
Es gibt keine Überlappung zwischen den beiden, außer dass in C ++ die Vererbung ein wesentlicher Bestandteil von beiden ist. In Sprachen, die zwischen Implementierungsvererbung ( extends
in Java) und Schnittstellenimplementierung ( implements
in Java) unterscheiden, gibt es jedoch auch diese Gemeinsamkeit nicht, da die Schnittstellenimplementierung für die Factory-Methode ausreicht, nicht jedoch für die Template-Methode. In C ++ kann die reine Implementierungsvererbung (ohne die Schnittstellenvererbung, dh private Vererbung oder CRTP) für die erstere verwendet werden, nicht jedoch für die letztere.
Und davon abgesehen? Eines ist ein Verhaltensmuster, das andere ein Kreationsmuster. Einer beschreibt einen Überblick über eine Operation, wobei einige Schlüsselteile von speziellen Unterklassen ausgefüllt werden müssen. Der andere legt einen sehr einfachen Vertrag fest, der die gesamte Implementierung den konkreten Instanzen überlässt. Sie sind völlig verschieden.
Meiner Meinung nach ist die zitierte Zeile einfach falsch. Entweder handelt es sich um einen offensichtlichen Fehler im Buch, oder (weniger wahrscheinlich) es ist aus dem Zusammenhang geraten und sollte anders interpretiert werden.