工厂模式
为了避免暴露创建对象的具体实现逻辑,将逻辑(创建过程)封装在一个函数中,这个函数就称为一个工厂。
本质上是一个负责生产对象实例的工厂。
工厂模式根据抽象程度的不同又可以细分为:简单工厂,工厂方法和抽象工厂。
简单工厂模式:
// 定义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')
本文介绍了工厂模式的概念及其在软件设计中的应用。通过示例代码详细解释了简单工厂模式,并展示了如何使用工厂方法创建不同类型的对象,如教师、学生和工人等。此外,还提供了一个食品工厂的示例,演示了如何通过工厂方法来实例化水果、蔬菜和饮料等对象。

被折叠的 条评论
为什么被折叠?



