文档章节

javascript设计模式之简单工厂模式

Zorn
 Zorn
发布于 2017/04/17 21:28
字数 325
阅读 13
收藏 0

关系对应图

首先,创建产品类A,代码如下:

function productA(){
    this.sum = 0
}
productA.prototype.create = function(sum){
    this.sum +=sum
    console.log("productA create: sum " + this.sum)
}

然后,创建产品类B,代码如下:

function productB(name){
    this.sum = 0
}
productB.prototype.create= function(sum){
    this.sum +=sum
    console.log("productB create: sum " + this.sum)
}

最后创建工厂,简单工厂模式中,最核心是工厂方法。提供静态方法,调用时提供参数,由它来根据参数分配不同的产品类,代码如下:

function factory(name){
    switch (name){
        case 'a':
            return new productA()
        break
        case 'b':
            return new productB()
        break
    }
}

调用工厂,获得产品类,代码如下:

var aFactory = factory("a")
var bFactory = factory("b")
aFactory.create(10) //打印 productA create: sum 10
bFactory.create(5) //打印 productB create: sum 5
aFactory.create(10) //打印 productA create: sum 20
bFactory.create(20) //打印 productB create: sum 25

由此可以看出,当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。使用起来相当方便,而且降低了系统的耦合度,使不同产品类修改起来十分方便。

但也有缺点,所有产品类都集中在工厂方法中。一旦工厂出现问题,那么整个系统都会瘫痪了。

 

© 著作权归作者所有

Zorn
粉丝 0
博文 4
码字总数 1386
作品 0
深圳
程序员
私信 提问
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0
《JavaScript设计模式与开发实践》最全知识点汇总大全

系列文章: 《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply 《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数 《JavaScript设计模式与开发实践》模式...

嗨呀豆豆呢
01/04
0
0
JavaScript设计模式总结

之前看过《JavaScript设计模式与开发实践》这本书,对书中的设计模式和一些相关案例也有了一定的了解,同时把这些设计模式的应用对应在在一些其他的项目中,进行了一些整理,如下仅供参考: ...

jefferyE
03/26
0
0
JavaScript 中常见设计模式-单例模式

     单例模式两个条件   确保只有一个实例   可以全局访问   适用   适用于弹框的实现,全局缓存   实现单例模式      JavaScript 中的单例模式   因为 JavaScript 是无...

webstack前端栈
2018/05/19
0
0
JavaScript 常见设计模式

前言 设计模式,这一话题一直都是程序员谈论的"高端"话题之一。许多程序员从设计模式中学到了设计软件的灵感和解决方案。 有人认为设计模式只在 C++或者 Java 中有用武之地,JavaScript 这种...

YeeWang王大白
03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HBase新建表报错 org.apache.hadoop.hbase.TableExistsException

之前安装了旧版本的hbase, 没有清理其在Zookeeper上的内容。 解决办法 stop-hbase.sh zkCli.sh >>> rmr /hbase >>> quit start-hbase.sh...

dreamness
16分钟前
1
0
大数据技术的应用现状与展望

本文是我即将由嵌入式底层驱动行业转入大数据研究领域的综述文章,案例摘自《程序员》电子期刊,由于初学者知识面较窄,查看文献量较少,因此后续还会在此基础上,继续跟踪并深入研究,为论文...

陈小君
22分钟前
1
0
NCRE考试感想 三级信息安全(上)

时间节点 报名时间:2017-06 考试时间:2017-09 查询成绩:2017-11   考试简述 满分100分,时间120分钟。题型有三种,选择题、综合题、应用题。   备考经验 题库是WLJY的,买了激活码。为了...

志成就
29分钟前
1
0
百度地图显示我的位置

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title></title><script type="text/javascript" src="jquery-1.8.2.min.js"></script></head><body><sec......

塔塔米
34分钟前
1
0
mysql mysql常用的常用函数

1. 数学函数 函 数 作 用 ABS(x) 返回x的绝对值 CEIL(x),CEILIN(x) 返回不小于x的最小整数值 FLOOR(x) 返回不大于x的最大整数值 RAND() 返回0~1的随机数 RAND(x) 返回0~1的随机数,x值相同返...

edison_kwok
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部