当前位置:首页 > JavaScript

js实现工厂

2026-01-31 21:45:27JavaScript

工厂模式的概念

工厂模式是一种创建型设计模式,用于封装对象的创建逻辑,通过统一的接口动态决定实例化哪个类。在 JavaScript 中,工厂模式常用于解耦对象创建过程,提升代码的可维护性和扩展性。

简单工厂模式实现

通过一个函数集中处理不同对象的创建逻辑,根据输入参数返回不同的实例。

function createProduct(type) {
  switch (type) {
    case 'A':
      return new ProductA(); // 假设 ProductA 是已定义的类
    case 'B':
      return new ProductB();
    default:
      throw new Error('Unknown product type');
  }
}

class ProductA {
  operation() {
    return 'Product A';
  }
}

class ProductB {
  operation() {
    return 'Product B';
  }
}

// 使用示例
const product = createProduct('A');
console.log(product.operation()); // 输出: Product A

工厂方法模式实现

定义抽象工厂接口,由子类决定具体实例化的对象类型。

class Factory {
  createProduct() {
    throw new Error('Abstract method must be implemented');
  }
}

class ConcreteFactoryA extends Factory {
  createProduct() {
    return new ProductA();
  }
}

class ConcreteFactoryB extends Factory {
  createProduct() {
    return new ProductB();
  }
}

// 使用示例
const factoryA = new ConcreteFactoryA();
const productA = factoryA.createProduct();
console.log(productA.operation()); // 输出: Product A

抽象工厂模式实现

扩展工厂方法模式,支持创建多个相关或依赖的对象族。

class AbstractFactory {
  createProductA() {
    throw new Error('Abstract method must be implemented');
  }
  createProductB() {
    throw new Error('Abstract method must be implemented');
  }
}

class ConcreteFactory1 extends AbstractFactory {
  createProductA() {
    return new ProductA1();
  }
  createProductB() {
    return new ProductB1();
  }
}

class ProductA1 {
  operation() {
    return 'Product A1';
  }
}

class ProductB1 {
  operation() {
    return 'Product B1';
  }
}

// 使用示例
const factory1 = new ConcreteFactory1();
const productA1 = factory1.createProductA();
console.log(productA1.operation()); // 输出: Product A1

适用场景

  • 需要动态创建不同类的实例。
  • 对象创建逻辑复杂或需要统一管理。
  • 希望隐藏具体类的实现细节。

通过工厂模式,可以降低代码耦合度,便于后续扩展和维护。

js实现工厂

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

相关文章

js实现倒计时

js实现倒计时

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

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取…