using System; using System.Collections.Generic; using System.Text; ///Template Method(模板方法)模式定义一个操作中的算法的骨架,将具体的处理细节交给子类具体实现。 ///add by jzh 2007-04-26 namespace DesignPattern { /// <summary> /// 抽象模版(AbstractClass)角色 /// 定义了一个或多个抽象操作,以便让子类实现。 /// 这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 /// </summary> class Algorithm { public void DoAlgorithm() { Console.WriteLine("In DoAlgorithm"); Console.WriteLine("In Algorithm - 步骤1"); Console.WriteLine("In Algorithm - 步骤2"); DoAlgoStep3(); Console.WriteLine("In Algorithm -步骤4"); DoAlgoStep5(); } virtual public void DoAlgoStep3() { Console.WriteLine("In Algorithm - 步骤3"); } virtual public void DoAlgoStep5() { Console.WriteLine("In Algorithm - 步骤5"); } } /// <summary> /// 具体模版(ConcreteClass) /// 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。 /// </summary> class CustomAlgorithm : Algorithm { public override void DoAlgoStep3() { Console.WriteLine("In CustomAlgorithm - 步骤3"); } public override void DoAlgoStep5() { Console.WriteLine("In CustomAlgorithm - 步骤5"); } } public class Client { public static void Main(string[] args) { CustomAlgorithm c = new CustomAlgorithm(); c.DoAlgorithm(); Console.ReadLine(); } } }