当前位置:首页 > JavaScript

js实现工厂

2026-04-05 14:02:03JavaScript

工厂模式概述

工厂模式是一种创建型设计模式,用于封装对象的创建过程,使代码更灵活、可维护。JavaScript中可通过函数或类实现工厂模式,根据输入参数返回不同对象实例。

简单工厂实现

通过函数返回不同对象实例:

js实现工厂

function createProduct(type) {
  switch(type) {
    case 'A':
      return { name: 'Product A', price: 100 };
    case 'B':
      return { name: 'Product B', price: 200 };
    default:
      throw new Error('Unknown product type');
  }
}

const productA = createProduct('A');
const productB = createProduct('B');

工厂方法模式

通过子类决定实例化哪个类:

class ProductFactory {
  createProduct() {
    throw new Error('Method must be implemented');
  }
}

class ProductAFactory extends ProductFactory {
  createProduct() {
    return { name: 'Product A', price: 100 };
  }
}

class ProductBFactory extends ProductFactory {
  createProduct() {
    return { name: 'Product B', price: 200 };
  }
}

const factoryA = new ProductAFactory();
const productA = factoryA.createProduct();

抽象工厂模式

创建相关或依赖对象的家族:

js实现工厂

class UIFactory {
  createButton() {
    throw new Error('Method must be implemented');
  }
  createDialog() {
    throw new Error('Method must be implemented');
  }
}

class MacFactory extends UIFactory {
  createButton() {
    return { render: () => 'Mac button' };
  }
  createDialog() {
    return { show: () => 'Mac dialog' };
  }
}

class WinFactory extends UIFactory {
  createButton() {
    return { render: () => 'Windows button' };
  }
  createDialog() {
    return { show: () => 'Windows dialog' };
  }
}

const macFactory = new MacFactory();
const macButton = macFactory.createButton();

使用场景

  • 需要创建多种类似对象
  • 对象创建过程复杂
  • 需要解耦对象创建和使用
  • 需要根据不同环境创建不同对象

优缺点分析

优点:

  • 封装创建逻辑
  • 代码可扩展性强
  • 符合单一职责原则
  • 便于单元测试

缺点:

  • 可能增加代码复杂度
  • 需要创建更多类/函数
  • 对简单对象创建可能过度设计

标签: 工厂js
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…