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