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 hasOwnProperty 方法 &amp; in 关键字
Nov 26 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
javascript+mapbar实现地图定位
Apr 09 Javascript
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
javascript实现英文首字母大写
Apr 23 Javascript
javascript文本模板用法实例
Jul 31 Javascript
JavaScript中对象的不同创建方法
Aug 12 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
JS运动特效之同时运动实现方法分析
Jan 24 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
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 print EOF实现方法
2009/05/21 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
一段实时更新的时间代码
2006/07/07 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
一道python走迷宫算法题
2018/01/22 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
django框架forms组件用法实例详解
2019/12/10 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
门卫人员岗位职责
2013/12/24 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python