在JavaScript中,工厂模式是一种创建对象的设计模式,而无需直接实例化类。工厂模式抽象了对象的创建过程,允许我们根据传入的参数返回不同类型的对象。
以下是一个简单的JavaScript工厂模式的例子:
// 定义一个工厂函数 | |
function CarFactory(type, color) { | |
// 创建一个空对象 | |
var car = {}; | |
// 根据传入的参数设置对象的属性和方法 | |
switch (type) { | |
case 'sedan': | |
car.doors = 4; | |
car.type = 'Sedan'; | |
break; | |
case 'suv': | |
car.doors = 5; // 假设SUV有5个门 | |
car.type = 'SUV'; | |
break; | |
// 可以添加更多车型 | |
default: | |
throw new Error('Unknown car type'); | |
} | |
car.color = color; | |
// 可以添加通用的方法 | |
car.start = function() { | |
console.log('Car is starting...'); | |
}; | |
// 返回创建的对象 | |
return car; | |
} | |
// 使用工厂函数创建对象 | |
var sedan = CarFactory('sedan', 'blue'); | |
var suv = CarFactory('suv', 'red'); | |
console.log(sedan); // 输出: { doors: 4, type: 'Sedan', color: 'blue', start: [Function: start] } | |
console.log(suv); // 输出: { doors: 5, type: 'SUV', color: 'red', start: [Function: start] } |
在这个例子中,CarFactory
函数就是一个工厂,它接受type
和color
作为参数,并返回一个具有相应属性和方法的对象。你可以根据需要添加更多的车型和属性。
工厂模式的一个优点是,它使得对象的创建过程与具体的实现解耦。当你需要创建新的对象类型时,你只需要修改工厂函数即可,而不需要修改使用工厂函数创建对象的代码。这有助于保持代码的清晰和可维护性。