在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
作为参数,并返回一个具有相应属性和方法的对象。你可以根据需要添加更多的车型和属性。
工厂模式的一个优点是,它使得对象的创建过程与具体的实现解耦。当你需要创建新的对象类型时,你只需要修改工厂函数即可,而不需要修改使用工厂函数创建对象的代码。这有助于保持代码的清晰和可维护性。