模板方法非常简单,其核心是利用了继承机制,AbstractClass是一个抽象模板,包括基本方法和模板方法。其中基本方法是一个已经实现的虚方法,模板方法是具体的方法,他们构成了顶级的逻辑骨架。而逻辑的具体操作延迟到具体的子类ConcreteClass来实现。
代码示例:
public 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"; }
protected override string
Answer2() {return "B"; }
}
客户端:
StudentATestPaper stuA=new StudentATestPaper();
stuA.TestQuestion1();
stuA.TestQuestion2();
学习所得:
编码中,同样的代码出现过两次,就需要适当的对设计产生怀疑。