重复=易错+难改
很多程序员都喜欢复制+粘贴
这样的后果是重复代码太多,一处有问题 处处需要改,代码大量冗余
使用模版方法,通过将不变行为迁移到父类(超类),去除子类重复代码来体现他的优势,模版方法提供了一个很好的代码复用平台
例:
using System; namespace ConsoleApplication2 { /// <summary> /// 代码复用的父类/模版类 /// </summary> public abstract class AbstractClass { //行为1 public abstract int Operation1(); //行为2 public abstract int Operation2(); /// <summary> /// 模版方法 /// 此方法内的行为可能某些地方是通用的一样的 比如+1 /// 某些地方可能是有变化的 如Operation1和Operation2可能执行不同的操作或返回不同的值 /// </summary> /// <returns></returns> public int TempletedMethod() { //将子类可变的行为封装到抽象方法里 int num = Operation1() + Operation2(); //可以将+1看成是通用的操作 return num +1; //模版方法继续执行通用的操作 } } public class A : AbstractClass { //子类实现可能会有变化的行为1 public override int Operation1() { return 1; } //子类实现可能会有变化的行为2 public override int Operation2() { return 1; } } public class B : AbstractClass { //子类实现可能会有变化的行为1 public override int Operation1() { return 2; } //子类实现可能会有变化的行为2 public override int Operation2() { return 2; } } class Program { static void Main(string[] args) { AbstractClass a = new A(); int Aresult = a.TempletedMethod(); Console.WriteLine(Aresult); AbstractClass b = new B(); int Bresult = b.TempletedMethod(); Console.WriteLine(Bresult); Console.Read(); //结果为3和5 } } }
Grass Mud Horse