工厂模式分为两种,一种是简单工厂模式。另一种称之为工厂模式。

简单工厂模式是使用一个外部的单体或者静态方法来生成实例。

而工厂模式使用子类来决定内部成员要实现那个具体的类的实例。

工厂模式要求被具体实现的类,必须提供相同的接口。

下面我们将通过一段代码来讲述一个简单工厂模式的实现。

function myMode(){}
myMode.prototype = {create:function(){var mode = createmode.create(mode);mode.xxx();//可以对返回的mode执行任何你想要的操作return mode;}
}var createdmode = (function(){  //一个单例return {    creaet:function(mode){var tmpMode;switch(mode){case 'mode1':tmpMode = new mode1();break;case 'mode2':tmpMode = new mode2();break;default:tmpMode = new defamode();break;}checkMode(mode,[xxx,xxx,xxx,xxx,xxx]);//checkMode的作用是检查mode是否实现了后面的[xxx]方法,如果没实现将抛出异常return tpmMode;}  }
})();function checkMode(obj,methods){if(!(typeof obj == 'object')){throw new Error("error");}for(var i=0,len=methods.length;i<len;i++){var method = methods[i];if(!obj[method] || typeof object[method] !== 'function'){throw new Error('error');}}
}

通过上面的代码,便实现了简单工厂模式。首先我们有一个myMode,他有一个create方法,这个方法将返回一个mode。

这个mode可以是任何对象。因为它是由一个外部单例所创造返回的mode。如果你想改变它,可以在外部单例里加入更多的case。

只要它实现了规定的接口,那么它就是符合的工厂模式的。是可以被myMode直接使用的。这一样以来,就可以把所有的mode集中在一起管理。

想要添加或者更改mode也变得容易。好了,简单工厂模式到此也就结束了。

下面是今天在某个群讨论时,看到的一段对工厂模式的描述的比较好的话。便顺手摘抄了下来

"后宫三千佳丽等待侍寝,大家都有名牌,一个太监把牌子拿上来,皇上翻,翻中一牌子给太监,太监去调这个女人(也许是男人),这个太监就相当于工厂,皇上给他参数,他根据参数去调用,但具体侍寝的事由后宫去实现,有的KJ,有的是XT,有的是TJ,有的是GJ,有的是XJ,各不相同"

不要问我那些字母代表什么意思,我想大家都懂的~~~~

不好意思,刚刚创建单例那里有点错误,已修正。

转载于:https://www.cnblogs.com/lynxcat/archive/2012/04/11/2442691.html

javascript设计模式简单介绍之【工厂模式】相关推荐

  1. JavaScript 设计模式 : 巧用'工厂模式'和'创建者'模式

    我为什么把他们两个放在一起讲?我觉得这两个设计模式有相似之处,有时候会一个设计模式不能满足你的需求而采用另一种设计模式.基于这点考虑,而且为了大家更好地理解,我放到了一起,加深大家的印象,活学活用. ...

  2. 浅谈Spring框架应用的设计模式(一)——工厂模式

    文章目录 前言 一.工厂模式介绍 1.简单工厂模式 (1)静态工厂模式 (2)利用反射机制实现的简单工厂 2.工厂方法模式 3.抽象工厂模式 二.Spring框架中工厂模式的重要应用 1.BeanFa ...

  3. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  4. 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...

    转自:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html 设计模式系列--三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂 ...

  5. 【Java设计模式】简单学抽象工厂模式——你好,微信还是支付宝

    目录 说明 实现方式 自问自答 其他链接 说明 五大创建型模式之一,其他还有单例模式.原型模式.建造者模式.工厂模式. 抽象工厂模式(Abstract Factory Pattern):定义了一个in ...

  6. JavaScript 23 种设计模式之 4 抽象工厂模式

    JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...

  7. 读秦小波《设计模式之禅》 -- 工厂模式

    设计模式是一种非常有用的编程技巧,它对于代码的重构有些非常重要的作用,对于软件开发人员来说,需要理解并尝试着使用这些设计的方法. 个人感觉<设计模式之禅>这本书中讲解的非常具体,每个模式都 ...

  8. 我以订披萨为例,给朋友详细讲了Java设计模式的3种工厂模式

    摘要:工厂模式是将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦.从而提高项目的扩展和维护性. 本文分享自华为云社区<[Java设计模式]用 披萨订购案例 详 ...

  9. 23种设计模式之单例模式、工厂模式、原型模式、建造者模式

    系列文章目录 第一章:程序设计原则-单一职责.接口隔离.依赖倒置.里式替换 第二章:程序设计原则-开闭原则.迪米特法则.合成复用原则 文章目录 系列文章目录 一.设计模式简单介绍 1.1.什么是设计模 ...

最新文章

  1. ACMNO.28 Python的三行代码解决 C语言-链接字符
  2. PTA团体程序设计天梯赛-L2-024 部落
  3. android系统tee接口,Android操作系统上的TEE / HSM支持
  4. LeetCode算法题-K-diff Pairs in an Array(Java实现)
  5. Python---时间函数
  6. 限制MySQL Binlog的传输速率
  7. python与大数据的关系论文_python与大数据的关系图
  8. web中“/”写在不同地方时的值不同
  9. 查看器_「图」Firefox 70将启用全新证书查看器 允许关闭画中画图标
  10. cad布局怎么用_【CAD】CAD布局怎么用?
  11. (毕业设计资料)基于单片机自行车码表系统设计
  12. 32位MD5加密 可用来微信加密
  13. 常成员函数函数和返回值为常量的函数
  14. 龙芯中科科创板上市:市值357亿 成国产CPU第一股
  15. 玩股票的人都是接盘侠
  16. 2021最新 阿里云PostgreSQL案例精选2 - 图像识别、人脸识别、相似特征检索、相似人群圈选
  17. 一个失败创业者的告白
  18. 成绩查询源码mysql_基于PHP+MYSQL的成绩查询系统(含源码)
  19. appium向右滑动
  20. 优易U盘加密软件(U盘加密精灵)与U盘加密器对比

热门文章

  1. 图解算法学习笔记(七):狄克斯特拉算法
  2. javascript递归遍历文件夹下面的所有文件并返回所有文件全路径名称数组以及解析JavaScript方法体字符串的结束位置
  3. 服务器不显示u盘,服务器不读u盘启动
  4. 学分绩点计算编程java_方便我们计算学分绩点的JavaScript
  5. 计算机的应用技术课程的看法,统计教学与计算机应用的几点看法论文
  6. java各层级限流对比,面试官说:来谈谈限流-从概念到实现,一问你就懵逼了?...
  7. 命名管道实现进程的信息传递【mkfifo函数、open函数】
  8. 神奇的x -x,Lowbit函数的实现方式!
  9. 操作系统中避免死锁的银行家算法【表面C++实际C语言】一学就废的菜鸡代码
  10. 【大总结2】大学两年,写了这篇几十万字的干货总结