作用:
父类定义一个整体的模板框架,将具体的方法行为定义到子类中。
模板方法主要是封装行为中的固定部分,同时允许子类对方法进行扩展
示例:
//moba游戏原型设计方案class MobaGame{loadAssets(){return{heroList:this.heroList(),equipmentList:this.equipmentList(),maps:this.maps()}}heroList(){throw new Error('具体游戏具体定义英雄')}equipmentList(){throw new Error('具体游戏具体定义装备')}maps(){throw new Error('具体游戏具体定义地图')}}//根据moba游戏模式创建dotaclass Dota extends MobaGame{constructor(){super()this.from = '从魔兽争霸单机游戏里进入的,不用账号'}heroList(){return ['末日使者','斧王','圣骑士','敌法师']}equipmentList(){return ['圣剑','阿哈利姆神杖']}maps(){return [{name:'天灾vs近卫地图'}]}}//根据moba游戏模式创建lolclass LOL extends MobaGame{constructor(code,password){super()this.code = codethis.password = password}heroList(){return ['德玛西亚皇子','虚空女皇','刀锋之影','诡术妖姬']}equipmentList(){return ['日炎斗篷','最后的轻语']}maps(){return [{name:'召唤师峡谷'},{name:'扭曲丛林'}]}}//下载war3let wjt_dota = new Dota()//加载dota游戏资源const dotaAssets = wjt_dota.loadAssets()console.log(dotaAssets,'dota资源')//下载英雄联盟let wjt_lol = new LOL('123456','654321')//加载lol资源const lolAssets = wjt_lol.loadAssets()console.log(lolAssets,'lol资源')