模板方法的定义很明确:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
具体代码:
//父类 public abstract class AbstractClass { //这里的两个方法让子类去实现,就是一些你的处理过程 //下面不止局限于方法,还有你子类中出现相同的部分放到父类中,而子类中只有具体的独有的功能操作 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); public void TemplateMehod() { //这里就是设置好了你的算法的骨架,就是执行的一个顺序 PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine(); } }
//具体子类的实现 public class ConcreteClassA:AbstractClass { //子类实现的父类的方法,具体的逻辑判断 public override void PrimitiveOperation1() { Console.WriteLine("具体类A方法1实现"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类A方法2实现"); } }
上面的对于模板方法的使用有很多的博主或者网站都有介绍并且还有很多的例子,但是我想说的模板方法用的时候是不是已经把业务确定下来了,然后才去用的,但是有没有想过你过一段时间发现你需要添加一个新的功能进去,那么你模板方法是不是就需要更改代码了,这是不是违背了开闭原则了,那么它的解决方法是什么,我们是不是模板方法的父类设置的具体算法骨架,那么我们在抽像出一个新的父类让这个模板父类继承,然后我们在这个新的父类中重新设置算法的执行顺序
它的大致这么一个思路是这样的,如果我哪里没有解释清楚,请提出来我好及时修改。感谢您的指教。