JavaScript设计模式之建造者模式实例教程


Posted in Javascript onJuly 02, 2018

本文实例讲述了JavaScript设计模式之建造者模式。分享给大家供大家参考,具体如下:

一、建造者模式模式概念

建造者模式可以将一个复杂的对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。也就是说如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式实际就是一个指挥者,一个建造者,一个使用指挥者调用具体建造者工作得出结果的客户。

建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。

通俗的说:就是一个白富美需要建一个别墅,然后直接找包工头,包工头再找工人把别墅建好。这其中白富美不用直接一个一个工人的去找。而且包工头知道白富美的需求,知道哪里可以找到工人,工人可以干活,中间节省了白富美的和工人之间沟通的成本,白富美也不需要知道房子具体怎么建,最后能拿到房就可以了。

二、建造者模式的作用和注意事项

模式作用:

1.分步创建一个复杂的对象

2.解耦封装过程和具体创建组件

3.无需关心组件如何组装

注意事项:

1.一定要一个稳定的算法进行支持

2.加工工艺是暴露的--白富美不用关心如何建房子,但可以随时去看房子建得怎么样

三、建造者模式代码和实战总结

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>建造者模式</title>
</head>
<body>
<script>
 //1.产出东西是房子
 //2.包工头调用工人进行开工 而且他要很清楚工人们具体的某一个大项
 //3.工人是盖房子的 工人可以建卧室 建客厅 建厨房
 //4.包工头只是一个接口而已 他不干活 他只对外说我能建房子
 function Fangzi(){//Fangzi可以理解为单例模式
  if(!(this instanceof Fangzi)){
   return new Fangzi();
  }
  this.woshi = "";
  this.keting = "";
  this.chufang = "";
 }
 function Baogongtou(){
  if(!(this instanceof Baogongtou)){
   return new Baogongtou();
  }
  this.jianfangzi = function(gongren){
   gongren.jian_chufang();
   gongren.jian_keting();
   gongren.jian_woshi();
  }
 }
 function Gongren(){
  if(!(this instanceof Gongren)){
   return new Gongren();
  }
  this.jian_woshi = function(){
   console.log("建卧室");
  }
  this.jian_keting = function(){
   console.log("建客厅");
  }
  this.jian_chufang = function(){
   console.log("建厨房");
  }
  this.jiaofang = function(){
   var _fangzi = new Fangzi();
   _fangzi.woshi = "ok";
   _fangzi.keting = "ok";
   _fangzi.chufang = "ok";
   return _fangzi;
  }
 }
 var gongren = new Gongren();
 var baogongtou = new Baogongtou();
 baogongtou.jianfangzi(gongren);
 var myfangzi = gongren.jiaofang();
 console.log(myfangzi);
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun测试运行效果如下:

JavaScript设计模式之建造者模式实例教程

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 Javascript
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
javascript正则表达式定义(语法)总结
Jan 08 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
详解axios在node.js中的post使用
Apr 27 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
对layui中的onevent 和event的使用详解
Sep 06 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 #Javascript
JS内部事件机制之单线程原理
Jul 02 #Javascript
JS将网址url转化为JSON格式的方法
Jul 02 #Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 #Javascript
JS限制输入框输入的实现代码
Jul 02 #Javascript
webpack手动配置React开发环境的步骤
Jul 02 #Javascript
Angularjs中的$apply及优化使用详解
Jul 02 #Javascript
You might like
php实现模拟post请求用法实例
2015/07/11 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python求解平方根的方法
2015/03/11 Python
在Python中使用第三方模块的教程
2015/04/27 Python
使用django实现一个代码发布系统
2019/07/18 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Django自带的用户验证系统实现
2020/12/18 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
《一个小村庄的故事》教学反思
2014/04/13 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
应聘英语教师求职信
2014/04/24 职场文书
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL