
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();
}
}
}