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 相关文章推荐
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
webstorm中vue语法的支持详解
May 09 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
vuex实现数据状态持久化
Nov 11 Javascript
推荐几个不错的console调试技巧实现
Dec 20 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
jquery移动节点实例
2015/01/14 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
Python操作SQLite数据库的方法详解
2017/06/16 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
投标承诺书范本
2014/03/27 职场文书
大四毕业生自荐书
2014/07/05 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
导游词之江西赣州
2019/10/15 职场文书