模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
模板方法模式是通过把不变行为搬到超类,去除子类中的重复代码来体现它的优势。
当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。(转至大话设计模式)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 模板方法模式 { class Exam { public void Test01() { Console.WriteLine("第一题:"); Console.WriteLine("答案:"+answer1()); } public virtual string answer1() { return "error"; } public void Test02() { Console.WriteLine("第二题:"); Console.WriteLine("答案:"+answer2()); } public virtual string answer2() { return "error"; } } class StuA:Exam { public override string answer2() { return "A"; } public override string answer1() { return "A"; } } class StuB:Exam { public override string answer2() { return "B"; } public override string answer1() { return "B"; } } class Program { static void Main(string[] args) { Exam stuA = new StuA(); stuA.Test01(); Exam stuB = new StuB(); stuB.Test02(); Console.ReadKey(); } } }