javascript 中模板方法单例的实现方法


Posted in Javascript onOctober 17, 2017

javascript 中模板方法单例的实现方法

模板方法单例

模板方法的定义:父类中定义一组操作算法骨架,将一些实现步骤延伸到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中某些实现步骤。

代码块

html部分,例如:

<div id="content"></div>

js部分,例如:

//格式化字符串方法
  function fromateString(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#}" rel="external nofollow" title="{#title#}">{#name#}</a>';
   //创建字符串
   this.html='';
   for (var i = 0; i < data.length; i++) {
    this.html += fromateString(this.item, data[i]);
   }
   return this.html;
  }
  //带有信息提示信息导航
  var NumNav = function (data) {
   //消息提醒小心组件模板
   var tpl = '<p>{#num#}</p>';
   for (var i = data.length -1; i >= 0; i--) {
    data[i].name += data[i].name + fromateString(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 + fromateString(tpl, data[i]);
   }
   return Nav.call(this, data);
  }

  //测试带有信息提示的导航
  var nav = document.getElementById('content');
  nav.innerHTML = NumNav([
   {
    href : 'www.baidu.com',
    title : '百度一下你就知道',
    name : '百度',    
    num : 10,
    link : 'www.baidu.com'
   },
   {
    href : 'www.taobao.com',
    title : '淘宝商城',
    name : '淘宝',    
    num : 2,
    link : 'www.taobao.com'
   },
   {
    href : 'www.qq.com',
    title : '腾讯首页',
    name : '腾讯',    
    num : 3,
    link : 'www.qq.com'
   }
  ]);

其实模板方法模式不仅仅在我们归一化组件的时候使用 有时候创建页面时也是很常用到的。通过上述代码可以衍生出的静态页面的封装以及业务逻辑的交互封装。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript setTimeout和setInterval计时的区别详解
Jun 21 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
Sep 04 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 Javascript
JS实现网站吸顶条
Jan 08 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 #Javascript
react中的ajax封装实例详解
Oct 17 #Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 #Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 #Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 #Javascript
Vue中封装input组件的实例详解
Oct 17 #Javascript
js获取文件里面的所有文件名(实例)
Oct 17 #Javascript
You might like
PHP中显示格式化的用户输入
2006/10/09 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP循环结构实例讲解
2014/02/10 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
JavaScript实现信用卡校验方法
2015/04/07 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
在Python中使用成员运算符的示例
2015/05/13 Python
Python的Django框架中的Context使用
2015/07/15 Python
python开发之list操作实例分析
2016/02/22 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Python 远程开关机的方法
2020/11/18 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
中学劳技课教师的自我评价
2014/02/05 职场文书
中专生自荐信
2014/06/25 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python