工厂模式是通过专门函数或类封装对象创建过程的设计模式,JavaScript中常用于根据条件生成不同对象。例如用户工厂根据类型创建VIP、管理员或普通用户对象,实现创建与使用的解耦。简单工厂用条件逻辑返回实例,工厂方法则通过抽象类扩展,如产品工厂创建手机或笔记本实例,符合开闭原则。应用场景包括表单验证、UI组件初始化、API客户端选择和日志记录器等,提升代码可维护性和扩展性。

工厂模式是一种创建型设计模式,它的核心作用是将对象的创建过程封装起来,让调用者无需关心具体的实现类。在JavaScript中,由于其动态和灵活的特性,工厂模式应用非常广泛,尤其适合处理需要根据条件创建不同对象的场景。
工厂模式通过一个专门的函数或类来创建对象,而不是直接使用 new 操作符。这个“工厂”函数会根据传入的参数决定实例化哪一个类或返回哪一种对象。
这样做的好处是:解耦对象的创建与使用,提高代码的可维护性和扩展性。
假设我们有一个需求:根据不同用户类型(普通用户、会员用户、管理员)创建对应的用户对象。
立即学习“Java免费学习笔记(深入)”;
代码实现:
function UserFactory(type, name) {
let user;
if (type === 'vip') {
user = { role: 'VIP用户', name, discount: 0.8 };
} else if (type === 'admin') {
user = { role: '管理员', name, accessLevel: 10 };
} else {
user = { role: '普通用户', name, discount: 1.0 };
}
return user;
}
const vipUser = UserFactory('vip', '张三');
console.log(vipUser); // { role: 'VIP用户', name: '张三', discount: 0.8 }
这种方式让调用者只需传入类型和名称,就能获得正确的用户对象,无需了解内部逻辑。
当业务变复杂时,可以将工厂本身也抽象出来,每个子类负责创建特定类型的对象。这更符合开闭原则(对扩展开放,对修改关闭)。
例如:定义一个基础工厂类,再由具体工厂创建具体产品。
代码示例:
class Product { }
class Phone extends Product {
getName() { return '手机'; }
}
class Laptop extends Product {
getName() { return '笔记本'; }
}
class ProductFactory {
create(type) {
if (type === 'phone') return new Phone();
if (type === 'laptop') return new Laptop();
throw new Error('不支持的产品类型');
}
}
const factory = new ProductFactory();
const phone = factory.create('phone');
console.log(phone.getName()); // 手机
这种结构便于后期添加新产品,只要扩展 create 方法即可,原有代码不受影响。
工厂模式常用于以下情况:
基本上就这些。工厂模式不复杂但容易忽略,合理使用能让代码更清晰、更易扩展。特别是在项目规模变大后,它的价值会更加明显。
以上就是JavaScript设计模式_工厂模式应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号