模板方法模式
1、个人理解,我们在考试的时候,会每人发一份卷子,这个卷子都是一样的,也就成了模板,但是这个卷子不一样的地方是什么呢,就是我们写在上面的答案,那么我们现在将这个卷子当成一模板写成一个类,但是这个类中答案的部分又不能被写死了,那么我们就将这个写答案的地方写成一个抽象方法,让继承他的子类去实现这个抽象方法。这样即不会破坏模板中的其它部分,只让继承他的类改需要改的地方。
定义:一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
1、定义抽象类,也就是模板
1 abstract class AbstractClass 2 { 3 //一些抽像的方法,必须在子类中去实现的 4 public abstract void OperationOne(); 5 public abstract void OperationTwo(); 6 7 //模板方法,在这个方法中有些是不变的模板 8 public void TemplateMethod() 9 { 10 Console.WriteLine("我是不变的部分,每一个继续我的子类都要有这一部分内容"); 11 OperationOne(); 12 OperationTwo(); 13 } 14 15 }
2、具体实现类,继承AbstractClass类,从写TemplateMethod方法
1 // A类 2 class ConcreteClassA : AbstractClass 3 { 4 5 public override void OperationOne() 6 { 7 Console.WriteLine("我是实现类A的第一个操作具体干的事。。。"); 8 } 9 10 public override void OperationTwo() 11 { 12 Console.WriteLine("我是实现类A的第二个操作具体要干的事。。。"); 13 } 14 } 15 //B类 16 class ConcreteClassB : AbstractClass 17 { 18 19 public override void OperationOne() 20 { 21 Console.WriteLine("我是实现类B的第一个操作具体干的事。。。"); 22 } 23 24 public override void OperationTwo() 25 { 26 Console.WriteLine("我是实现类B的第二个操作具体要干的事。。。"); 27 } 28 }