模板方法模式
核心概念
模板方法模式(Template Method Pattern)的核心在于定义一个操作中的算法骨架,而将一些步骤延迟到子类中执行。这样,子类可以在不改变算法整体结构的前提下,重新定义该算法的某些特定步骤。
简单来说,就是把那些不变的逻辑放在父类里,把那些变化的逻辑交给子类去实现。当多个子类拥有相同的行为流程,只是具体细节不同时,这个模式非常有效。它利用继承机制,提取了公共代码,让结构更清晰,也减少了重复。
从结构上看,抽象模板类包含基本方法和模板方法。其中基本方法是已经实现的虚方法,模板方法是具体的方法,它们构成了顶级的逻辑骨架。而逻辑的具体操作则延迟到具体的子类中去实现。
代码实现
下面用 C# 来演示一下。我们模拟一个'试卷'场景:考试流程是固定的(出题、阅卷),但具体的题目和答案由不同的学生(子类)决定。
public abstract class TestPaper
{
// 模板方法:定义算法骨架
protected void TestQuestion1()
{
Console.WriteLine("1+1=?");
Console.WriteLine("答案:" + Answer1());
}
// 基本方法(钩子方法):留给子类实现
public virtual string Answer1()
{
return "";
}
public virtual string Answer2()
{
return "";
}
}
public class StudentATestPaper : TestPaper
{
// 子类实现具体步骤
protected override string Answer1()
{
return "A";
}
()
{
;
}
}
{
{
StudentATestPaper stuA = StudentATestPaper();
stuA.TestQuestion1();
}
}

