在一個抽象類別中定義了執行方法(method)的模板。
並讓其子類別(SubClass)按需求覆寫(override)方法實現。
透過將實際功能延遲到子類別中實現的方式,讓子類別擁有多樣性的同時,
也能避免掉重複撰寫相同程式碼的壞味道(Code Smell)。
常與模板模式拿來比較的模式有兩個,一個是抽象工廠模式、另一個是策略模式。
廣義來說 模板模式與抽象工廠可以算是同一種設計模式。
只是抽象工廠的用途定義的比較狹隘些,而在模板模式算是包含了抽象工廠模式。
而與策略模式相比,模板模式是一個繼承的設計方式(is-a)而策略模式是組合(has-a)的設計方式。
運用上模板模式對於內部的屬性使用較為方便適合做對內部屬性有更動的設計。
而策略模式的使用較為彈性,若行為變動的主因是外在環境影響(類別以外),
則適合策略模式。