前端设计模式-工厂模式

本文介绍了工厂模式的概念及其在软件设计中的应用。通过示例代码详细解释了简单工厂模式,并展示了如何使用工厂方法创建不同类型的对象,如教师、学生和工人等。此外,还提供了一个食品工厂的示例,演示了如何通过工厂方法来实例化水果、蔬菜和饮料等对象。

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

工厂模式
为了避免暴露创建对象的具体实现逻辑,将逻辑(创建过程)封装在一个函数中,这个函数就称为一个工厂。
本质上是一个负责生产对象实例的工厂。
工厂模式根据抽象程度的不同又可以细分为:简单工厂,工厂方法和抽象工厂。

简单工厂模式:

// 定义Teacher类
class Teacher {
	constructor(name, gender) {
		this.name = name,
		this.gender = gender
	}
	getName() {
		console.log(this.name)
	}
}
// 定义Student类
class Student {
	constructor(name, gender) {
		this.name = name,
		this.gender = gender
	}
	getName() {
		console.log(this.name)
	}
}
// 定义Worker类
class Worker {
	constructor(name, gender) {
		this.name = name,
		this.gender = gender
	}
	getName() {
		console.log(this.name)
	}
}
// 根据类实例化对象
let teacherZhang = new Teacher('zhangsan', 'male')
let studentLi = new Student('lisi', 'female')
let wrokerWang = new Worker('wangwu', 'male')
// 安全模式创建的工厂方法函数
let FoodFactory = function(category) {
  if(this instanceof FoodFactory) {
    var cate = new this[category]()
    return cate
  } else {
    return new FoodFactory(category)
  }
}

// 工厂方法函数的原型中设置所有对象的构造函数
FoodFactory.prototype = {
  Fruits: function() {
    this.name = "水果",
    this.fruitList= ['苹果', '香蕉', '西瓜', '桃子']
  },
  Vegetables: function() {
    this.name = "蔬菜",
    this.vegetableList= ['番茄', '黄瓜', '白菜', '洋葱']
  },
  Drinks: function() {
    this.name = '饮料',
    this.drinkList= ['茶', '汽水', '可乐']
  }
}

//调用
let fruits = FoodFactory('Fruits')
let vegetables = FoodFactory('Vegetables') 
let drinks = FoodFactory('Drinks')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值