模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。也就是说模板方法模式通过把不变的行为搬移到超类,去除子类中的重复代码,为代码复用提供了一个很好的平台。
就像我们平时参加的考试,每个人一张试卷,试卷上面的试题都是一样的,唯独可能不一样的地方就是每个人填写的答案。如果在PC环境中,出现每个人的试卷都是一样的会是一个很大的问题,假如说试题错了,则会相应的修改每一份试卷,为系统的维护提供了很大的困难。而模板方法模式则是将这些相同的部分提出来作为一个超类,然后让每一个子类去继承,则在修改的时候只需要修改超类中的就可以了。具体比较看下面的程序:
普通考试形式:
classstudentA { public void Question1() { console.WriteLine("你的名字是? a.张三 b.李四 c.王五"); console.WriteLine("答案:b"); } } classstudentB { public void Question1() { console.WriteLine("你的名字是? a.张三 b.李四 c.王五"); console.WriteLine("答案:a"); } }
利用模板方法模式之后的形式:
classTestParper { Protected void Question1() { console.WriteLine("你的名字是? a.张三 b.李四 c.王五"); console.WriteLine("答案:"+Answer()); } protected virtual string Answer() { Return ""; } } classstudentA:TestParper { protected override string Answer() { Return "b"; } } classstudentB:TestParper { protected override string Answer() { Return "a"; } }
通过以上两种形式的比较,可以清楚的认识到,模板方法模式对于代码的复用具有很好的作用。
原文:http://blog.csdn.net/u010927139/article/details/20392019