模板方法,定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结果即可重定义该算法的某些特定步骤。
模板方法是一种代码复用的基本技术,在类库中提取公共行为。
具体体现是面向对象编程语言里的抽象类,以及抽象类中的方法,以及继承该抽象类(和抽象方法)的子类
模板作用:1、一次性实现一个算法不变的部分,并将可变的行为留给子类来实现;2、各子类中公共行为应被提取出来并集中到一个公共父类中的避免代码重复,不同之处分离为新的操作,最后用一个钩子钓鱼这些新操作的模板方法来替换这些不同的代码;3、控制子类扩展,模板方法只在特定点调用hook操作,这样允许在这些点进行扩展。
例子:
function god(){};
god.prototype.zaoren_yanjing=function(argument){
console.log("yanjing")
}
god.prototype.zaoren_bizi=function(argument){
console.log("bizi")
}
god.prototype.zaoren_zuiba=function(argument){
console.log("zuiba")
}
god.prototype.aiahao=function(argument){
throw new Error("我是一个钩子")
}
通过继承子类来继承父类的公共方法
function xiaoming(){
console.log("小明是上帝的子类");
god.call(this);//改变父类中的指针
}
xiaoming.prototype=new god;子类继承父类
xiaoming.prototype.aihao=function(){
conso.log("小明讲笑话")
}
用到了JavaScript的继承里面的知识,JavaScript内部指针由实例对象指向原型对象再指向构造函数,所有继承就是子类的原型等于父类的实例;