抽象类
模版方法模式是一种严重依赖抽象类的模式,因此这种设计模式可以说是js做出让步下对java的模仿。
在js中,依然通过prototype来实现继承的效果,但就目前的业务来说,基本用不上。。。
钩子方法hook
模版方法是一种接近上层框架的设计模式,前端框架不管是react还是vue都具备生命周期方法,这些生命周期方法就是对变化的高度抽象(这个我暂时还描述不清楚,但是有这个感觉)。
放置钩子是隔离变化的常见手段,钩子的执行结果来控制程序的走向,程序就十分灵活了。
好莱坞原则
下级组件不能调用上级组件,子类的调用完全由父类决定。
// 不使用原型继承来实现模板方法模式var Beverage=function(params){ // 看起来像是基于高阶函数来实现了继承var boilWater=function(){}var brew=params.brew||function(){} // 抽象子类的重写方法行为var pourInCup=params.pourInCup||function(){}var F=function(){}F.prototype.init=function(){boilWater()brew()pourInCup()}return F}var Coffee=Beverage({brew:function(){},pourInCup:function(){},...})var coffee=new Coffee()coffee.init()
在js中,高阶函数是实现继承的更好选择。
