模板方法模式:定义一个操作中的算法的骨架,而将这些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构,即可重新定义该算法的某些步骤
当我们要完成在某一细节层次一致的一个过程或者一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理
namespace 模板方法模式 { class Program { static void Main(string[] args) { AbstractClass c; //调用模板A c = new ConcreteClassA(); c.TemplateMethod(); //调用模板B c = new ConcreteClassB(); c.TemplateMethod(); Console.Read(); } } /// <summary> /// 定义处理方法基类 /// </summary> abstract class AbstractClass { //抽象操作方法1 public abstract void PrimitiveOperation1(); //抽象操作方法2 public abstract void PrimitiveOperation2(); //调用方法 public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine(""); } } /// <summary> /// A 模板 继承基类,实现抽象方法 /// </summary> class ConcreteClassA : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类A方法1实现"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类A方法2实现"); } } /// <summary> /// B 模板 继承基类,实现抽象方法 /// </summary> class ConcreteClassB : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类B方法1实现"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类B方法2实现"); } } }