概念:
百度上的定义:一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
按照我的理解来说,就是一个流程中,总体的步骤是固定的,但有些步骤是改变的,例如我们做煎蛋这个过程,有哪些步骤是固定的呢,打蛋,下锅,上碟都是固定的,但有时候我们想吃咸的,有时候想吃甜的,所以在说放佐料的步骤是改变的。
一些理解:
所有的设计模式都是把变化点和固定点分离开来,所谓的固定和变化是相对的,例如我们有一个步骤一个月才改变一次,那么他相对其他步骤来说就是固定的,如果一个程序他是完全变化的,或者是完全固定的,那么他就不需要运用任何的设计模式,这个模式通常体现在写库的程序员和应用程序员的身上。
通常程序的绑定有2种,一种叫做晚绑定,一种叫做早绑定,什么意思呢?我们写的程序肯定是有先后的,早绑定的意思就像我们写C语言时调用已经写好的函数,这其实也是我们约定俗成的一种使用方式,而晚绑定指的是我们写的子类继承父类,但我们继承的可能是一个抽象类,我们需要overwrite一些函数,然后我们才能调用父类的某一些方法,意思是让父类来调用子类的函数,而不是子类来调用父类的函数,这就造成了一个问题,就是程序的主流程需要在父类里面来实现,写库函数的程序员不得不学会写主流程,而这个主流程可能会同时调用父类里面的几个函数,所以我们应该把这几个函数写为protected或者private,因为通常他单一个方法起不了任何的作用,这也体现了我们面向对象的八大原则我们运用的框架很多都是运用了模板设计模式。