JavaScript 中 class 语法中工厂模式怎么实现
在 javascript 的 class 语法中,工厂模式的实现通常是将静态方法(static)定义在类内部,用于根据输入条件创建并返回不同的实例。这种做法结合了类的封装性与工厂方法的灵活性,使得对象的创建逻辑与业务逻辑分离。

如何基于类型参数动态创建不同子类实例
通过定义一个包含 static create() 方法的基类,可以在调用时根据传入的类型参数(如字符串标识符)实例化具体的子类。这种方式避免了在外部使用冗长的 if-else 或 switch 语句来判断实例化逻辑,同时保持了代码的结构清晰。

你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
class Shape {
constructor(name) {
this.name = name;
}
static create(type) {
switch (type) {
case 'circle':
return new Circle();
case 'square':
return new Square();
default:
throw new Error('Unknown shape type');
}
}
}
class Circle extends Shape {
constructor() {
super('Circle');
}
draw() {
console.log('Drawing a circle');
}
}
class Square extends Shape {
constructor() {
super('Square');
}
draw() {
console.log('Drawing a square');
}
}
const myShape = Shape.create('circle');
myShape.draw(); // Output: Drawing a circle当传入未知类型参数时程序会抛出什么异常
如果在调用 Shape.create() 时传入了未在 switch 语句中定义的参数,程序会执行到 default 分支,从而抛出一个 Error 对象。该错误信息明确指出了未知的类型,这有助于开发者快速定位配置或调用中的错误。
立即学习“Java免费学习笔记(深入)”;

// 测试未知类型
try {
const unknownShape = Shape.create('triangle');
} catch (e) {
console.error(e.message); // Output: Unknown shape type
}

















