模闆方法模式(Template Method Pattern),定義一個操作中的算法骨架,而将一些步驟延遲到子類中。模闆方法使得子類可以不改變一個算法的結構即可以重定義算法的某些特定步驟。模闆方法模式把不變行為搬移到超類,進而去除子類中的重複代碼,實際上模闆方法模式就是提供了一個代碼複用平台。
要完成在某一細節上層次一緻的一個過程或一系列步驟,但個别步驟在更詳細的層次上實作不同時,可以使用模版方法模式解決問題。
抽象類AbstractClass,實作了一個模版方法,定義了一個算法架構,具體子類将重新定義PrimitiveOperation1和PrimitiveOperation1以實作一個算法的步驟。
子類ConcreteClassA和ConcreteClassB,實作PrimitiveOperation1和PrimitiveOperation1以完成算法中與特定子類相關的步驟。
1、抽象模闆類AbstractClass及其模闆方法TemplateMethod()
public abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("模闆方法執行完");
}
}
2、子類ConcreteClassA、ConcreteClassB實作父類定義的抽象方法
public class ConcreteClassA:AbstractClass
public override void PrimitiveOperation1()
Console.WriteLine("具體實作類{0}方法1實作",this.GetType().Name);
public override void PrimitiveOperation2()
Console.WriteLine("具體實作類{0}方法2實作", this.GetType().Name);
public class ConcreteClassB:AbstractClass
Console.WriteLine("具體實作類{0}方法1實作", this.GetType().Name);
3、用戶端代碼
static void Main(string[] args)
AbstractClass abstractClass = new ConcreteClassA();
abstractClass.TemplateMethod();
abstractClass = new ConcreteClassB();
Console.ReadKey();
本文轉自 靈動生活 51CTO部落格,原文連結:http://blog.51cto.com/smartlife/270970,如需轉載請自行聯系原作者