js 模板方法模式

Posted redn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 模板方法模式相关的知识,希望对你有一定的参考价值。

父类中定义算法骨架,子类中实现和改变一些算法

例:导航的实现

//算法骨架
var formateStr=function (param, data) {
return param.replace(/\{#(\w+)#\}/g,function (match, key) {
return typeof data[key]===undefined? "":data[key]
})
};
var Nav=function (data) {
var _this=this;
_this.item=‘<li><a href="{#hrefUrl#}" title="{#title#}" {#sign#}>{#content#}</a></li>‘;
_this.html=‘<ul>‘;
for (var i=0,l=data.length;i<l;i++){
_this.html+=formateStr(_this.item,data[i])
}
_this.html+=‘</ul>‘;
return _this.html;
};

//基础导航
var obNav=document.getElementById(‘nav‘);
obNav.innerHTML=Nav([
{
hrefUrl : ‘http://www.baidu.com‘,
content : ‘百度一下‘
},
{
hrefUrl : ‘http://www.zhihu.com‘,
content : ‘知乎一下‘
}
]);


//带提示消息的导航
var infoNav=function (data) {
var _this=this;
_this.info=‘<i>{#num#}</i>‘;
for (var i=data.length-1;i>=0;i--){
data[i].content+=formateStr(_this.info,data[i])
}
return Nav.call(this,data)
};
var objNav=document.getElementById(‘nav‘);
objNav.innerHTML=infoNav([
{
hrefUrl : ‘http://www.baidu.com‘,
content : ‘百度一下‘,
title : ‘百度‘,
num : ‘10‘,
sign : ‘sign="1"‘
},
{
hrefUrl : ‘http://www.zhihu.com‘,
content : ‘知乎一下‘,
title : ‘知乎‘,
num : ‘10‘,
sign : ‘sign="2"‘
}
]);
























































以上是关于js 模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

Android:带有片段的模板模式

js之模板方法模式

js 模板方法模式

模板方法设计模式详解C/Java/JS/Go/Python/TS不同语言实现

C#常用代码片段备忘

VSCode自定义代码片段——.vue文件的模板