模板方法模式:定义一个操作中的算法的骨架,而将这些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构,即可重新定义该算法的某些步骤
当我们要完成在某一细节层次一致的一个过程或者一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理
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实现");
}
}
}