模板方法是一種常見的設計模式,它定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
UML圖:
具體實現程式碼:
namespace TemplateMethod { class Program { static void Main(string[] args) { AbstractClass A = new ConcreteClassA(); A.TemplateMethod(); AbstractClass B = new ConcreteClassB(); B.TemplateMethod(); Console.ReadKey(); } } public abstract class AbstractClass { public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine(""); } } class ConcreteClassA : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具體類A.方法1實現"); } public override void PrimitiveOperation2() { Console.WriteLine("具體類A.方法2實現"); } } class ConcreteClassB : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具體類B.方法1實現"); } public override void PrimitiveOperation2() { Console.WriteLine("具體類B.方法2實現"); } } }
模版方法模式的特點:
模版方法模式是通過把不變的行為搬移到父類,去除子類中的重複程式碼來體現它的優勢。
模版方法模式就是提供了一個很好的程式碼複用平臺。
當不變的和可變的行為在方法的子類實現中混合在一起的時候, 不變的行為就會在子類中重複出現。我們通過模版方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏。