js 模板方法模式
2016-09-17 16:29
253 查看
模板方法模式:父类中定义一组操作算法骨架,而将一些实现步骤延迟到子类中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="content"></div>
<script>
function formateString(str, data) {
return str.replace(/\{#(\w+)#\}/g, function (match, key) {
return typeof data[key] === undefined ? '' : data[key]
});
}
var Nav = function (data) {
this.item = '<a href="{#href#}" title="{#title#}">{#name#}</a>';
this.html = '';
for (var i = 0, len = data.length; i < len; i++) {
this.html +=formateString(this.item, data[i]);
}
return this.html;
}
var NumNav = function (data) {
var tpl = '<b>{#num#}</b>';
for (var i = data.length - 1; i >= 0; i--) {
data[i].name = data[i].name + formateString(tpl, data[i]);
}
return Nav.call(this, data);
}
var LinkNav = function (data) {
var tpl = '<span>{#link#}</span>';
for (var i = data.length - 1; i >= 0; i--) {
data[i].name = data[i].name + formateString(tpl, data[i]);
}
return Nav.call(this, data);
}
var nav = document.getElementById('content');
nav.innerHTML = NumNav([{
href: 'https://www.baidu.com/',
title: '百度一下,你就知道',
name: '百度',
num: '10'
}, {
href:'http://www.qq.com/',
title:'腾讯首页',
name:'腾讯',
num:'2'
}, {
href : 'http://www.taobao.com/',
title:'淘宝商城',
name:'淘宝',
num:'3'
}]);
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="content"></div>
<script>
function formateString(str, data) {
return str.replace(/\{#(\w+)#\}/g, function (match, key) {
return typeof data[key] === undefined ? '' : data[key]
});
}
var Nav = function (data) {
this.item = '<a href="{#href#}" title="{#title#}">{#name#}</a>';
this.html = '';
for (var i = 0, len = data.length; i < len; i++) {
this.html +=formateString(this.item, data[i]);
}
return this.html;
}
var NumNav = function (data) {
var tpl = '<b>{#num#}</b>';
for (var i = data.length - 1; i >= 0; i--) {
data[i].name = data[i].name + formateString(tpl, data[i]);
}
return Nav.call(this, data);
}
var LinkNav = function (data) {
var tpl = '<span>{#link#}</span>';
for (var i = data.length - 1; i >= 0; i--) {
data[i].name = data[i].name + formateString(tpl, data[i]);
}
return Nav.call(this, data);
}
var nav = document.getElementById('content');
nav.innerHTML = NumNav([{
href: 'https://www.baidu.com/',
title: '百度一下,你就知道',
name: '百度',
num: '10'
}, {
href:'http://www.qq.com/',
title:'腾讯首页',
name:'腾讯',
num:'2'
}, {
href : 'http://www.taobao.com/',
title:'淘宝商城',
name:'淘宝',
num:'3'
}]);
</script>
</body>
</html>
相关文章推荐
- js模板方法模式
- 【JS】星级评分原理和实现(第4章 模板方法模式 - 下 )
- 【JS】星级评分原理和实现(第4章 模板方法模式 - 中 )
- JS设计模式之模板方法
- js如何实现设计模式中的模板方法
- js设计模式之模板方法模式
- js之模板方法模式
- js之模板方法模式
- 模板方法模式(Template Method Pattern)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 仿服务器端脚本方式的JS模板实现方法
- TemplateMethod模板方法(行为型模式)
- 第六个设计模式:模板方法
- 连接两个模板方法模式?
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 模板方法模式实现探讨
- 仿服务器端脚本方式的JS模板实现方法
- 求同存异——Java模式系列谈之模板方法
- 设计模式学习笔记(十六)——Template Method模板方法模式