一、建造者模式概念解读

1.建造者模式概念文字解读

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

建造者模式主要用于“分步骤构建一个复杂的对象”,这在其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。一句话:指挥者分配任务,建造者进行开发,各执其责,稳定在一个大的流程里面去。

2.建造者模式概念拟物化解读

一位女士要建造一座别墅,需要找来一位包工头,包工头再将具体的任务分配给工人做,做完之后再给女士使用。

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

模式作用:

1.分步骤创建一个复杂的对象(先各自独立的细节)。

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

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

注意事项:

1.一定要有一个稳定的算法进行支持(要先把合同签好)。

2.加工工艺是暴露的(使用者可以反馈问题,中间需要介入一个包工头)。

八字:各执其职,拆解流程。

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

1.一个实例

代码如下:

<meta charset="utf-8"/>
<script type="text/javascript">
//1.产出的东西是房子house
//2.包工头contractor 调用工人进行开工 而且他要很清楚工人们具体的某一个大项
//3.工人worker 是盖房子的 工人可以建卧室make_bedroom、建客厅make_livingroom、建厨房make_kitchen
//4.包工头只是一个接口而已,他不干活,他只对外说我能盖房子 //房子House
function House(){ //作为类,首字母大写
this.bedroom="";
this.livingroom="";
this.kitchen="";
}
//包工头Contractor
function Contracter(){
this.makeHouse=function(worker){
worker.make_bedroom();
worker.make_livingroom();
worker.make_kitchen();
}
}
//工人Worker
function Worker(){
this.make_bedroom=function(){
alert('卧室我盖好了'); //因为alert 的是中文,所以在最前面要一个utf-8
}
this.make_livingroom=function(){
alert('客厅我盖好了');
}
this.make_kitchen=function(){
alert('厨房我盖好了');
}
//交工handover
this.handover=function(){
var _house= new House();
_house.bedroom="ok";
_house.livingroom="ok";
_house.kitchen="ok";
return _house; }
};
var worker=new Worker;
var contracter=new Contracter();
contracter.makeHouse(worker);//包工头声称他能盖房子,是一个接口,故要给他一个makeHouse(worker)
var myhouse=worker.handover();
console.log(myhouse); //整个过程女主人不用和工人直接接触,只需要交代给包工头就可以了 </script>

结果截图:

JavaScript 设计模式之建造者模式的更多相关文章

  1. 从ES6重新认识JavaScript设计模式(三): 建造者模式

    1 什么是建造者模式? 建造者模式(Builder)是将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示. 建造者模式的特点是分步构建一个复杂的对象,可以用不同组合或顺序建造出不 ...

  2. JavaScript设计模式之建造者模式

    一.建造者模式模式概念 建造者模式可以将一个复杂的对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.也就是说如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体 ...

  3. 再起航,我的学习笔记之JavaScript设计模式08(建造者模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

  4. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  5. C#设计模式(5)——建造者模式(Builder Pattern)

    一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象, ...

  6. 【GOF23设计模式】建造者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...

  7. C++设计模式之建造者模式(三)

    4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外.还能够通过Director类来更加精细地控制产品的创建过程.比如添加一类称之为钩子方法(HookMethod)的特殊方法来控制是 ...

  8. 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)

    原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...

  9. JavaScript设计模式之----组合模式

    javascript设计模式之组合模式 介绍 组合模式是一种专门为创建Web上的动态用户界面而量身制定的模式.使用这种模式可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更 ...

随机推荐

  1. 【计算机网络】详解网络层(二)ARP和RARP

    ARP ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(物理地址)的协议.在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设 ...

  2. assets raw 资源 AssetManager

    assets raw 目录简介 assets核心特性:不会被编译成二进制,支持子目录(可以分类,这是相对raw目录最大的好处),通过文件名访问,调用getAssets通过AssetManager访问 ...

  3. 两个JS对象怎样才能相等

    在JS中,两个对象如何才能相等?下面的两个 Alert,只有一个输出true.  在JS中如何才能构造出两个JS对象相等? var prop1 = {asd:{def:'abc'}}; var pro ...

  4. EasyUI-Tooltip(提示框)学习

    引子: if($("#BLUETOOTH_a")){ $("#BLUETOOTH_a").tooltip({ position: 'right', conten ...

  5. IOS 实现界面本地化(国际化)

    在制作应用程序的时候,可以使用本地化功能,将应用程序的内容翻译成多种语言,在不同的区域显示不同的语言.下面就通过简体中文本地化设置来讲解一下本地化的简单使用. 一.让应用程序支持中文语言环境 选择需要 ...

  6. hadoop伪分布集群搭建

    系统环境:ubuntu server16.04 1.root@master:~$ vim /etc/hostname #修改主机名 master 2.root@master:~$ reboot #重启 ...

  7. 如何使用奥特歌词制作双语LRC字幕

    AutoLyric(奥特歌词)使用常见问题和技巧 1.如何设置桌面歌词字体的大小? 桌面歌词字体的大小由桌面歌词窗口的缩放来条设置,把鼠标放在桌面歌词上稍后就会出现半透明的窗口,对该窗口就可以进行拖动 ...

  8. 单点登录(SSO)(原创)

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 下面的sso ...

  9. 绕过Web授权和认证之篡改HTTP请求

    一.什么是HTTP请求 超文本传输协议(HTTP)提供了多种请求方法来与web服务器沟通.当然,大多数方法的初衷是帮助开发者在开发或调试过程中部署和测试HTTP应用.如果服务器配置不当,这些请求方法可 ...

  10. Android 的一些提示框

    1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...