博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JS第19期】设计模式-简单工厂模式
阅读量:6290 次
发布时间:2019-06-22

本文共 1608 字,大约阅读时间需要 5 分钟。

简单工厂模式是由一个工厂对象决定创建某一种产品对象的实例。主要用来创建同一类对象。如下:

function createPersion(name, age, job) {    var persion = new Object();    persion.name = name;    persion.age = age;    persion.job = job;    persion.sayName = function() {      alert(this.name)    }    return persion;  }  var persion1 = createPersion('bill', '27', '研发');  console.log(persion1); // {name: "bill", age: "27", job: "研发", sayName: ƒ}  var persion2 = createPersion('bill2', 30, 'seo');  console.log(persion2); // {name: "bill2", age: 30, job: "seo", sayName: ƒ}复制代码

我们还可以指定我们希望创建的工厂的类型。如:

// 定义一个 white(白酒) 构造函数function White(options) {  this.brand = options.brand || '茅台', // 品牌  this.proof = options.proof || '45' // proof 酒精度}// 定义一个 red(红酒) 构造函数function Red(options) {  this.brand = options.brand || '拉菲', // 品牌  this.proof = options.proof || '12' // proof 酒精度}// 定义一个wine  工厂的大体代码function Wine() {}// 定义该工厂的默认类型 为 白酒Wine.prototype.wineClass = White;// 创建酒的实例的工厂方法Wine.prototype.createWine = function(options) {  if (options.type === 'white' ) {    this.wineClass = White;  } else {    this.wineClass = Red;  }  return new this.wineClass(options);}// 创建生成白酒的工厂实例var whiteWine = new Wine();var white = whiteWine.createWine({  type: 'white',  brand: '五粮液',  proof: '53'})console.log(white) // White {brand: "五粮液", proof: "53"}// 创建生成红酒的工厂实例var red = whiteWine.createWine({  type: 'red',  brand: '白兰地',  proof: '22'})console.log(red) // Red {brand: "白兰地", proof: "22"}复制代码

工厂模式的应用场景

  • 当对象或组件涉及高复杂性时
  • 当需要根据所在的不同环境生成对象的不同实例时
  • 当处理很多共享相同属性的对象或组件时
  • 当编写只需要满足一个api契约的其他对象的实例对象时。对于解耦很有用

如有侵权,请发邮箱至wk_daxiangmubu@163.com 或留言,本人会在第一时间与您联系,谢谢!!

长按二维码关注我们,了解最新前端资讯

转载地址:http://ltcta.baihongyu.com/

你可能感兴趣的文章
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
关于FreeBSD的CVSROOT的配置
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>