【JS第19期】设计模式-简单工厂模式

本文介绍了简单工厂模式的概念及其应用场景,并通过具体的JavaScript代码示例展示了如何使用简单工厂模式来创建对象实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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 或留言,本人会在第一时间与您联系,谢谢!!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值