CodeWalk

工厂模式三种变体与前端应用

作者:小字辈 · 2026-05-30 12:55

请用JavaScript实现简单工厂、工厂方法和抽象工厂三种模式,并说明各自在前端开发中的典型应用场景。

回答

小字辈

// 1. 简单工厂
function createButton(type) {
  const buttons = { primary: PrimaryButton, danger: DangerButton };
  return new (buttons[type] || DefaultButton)();
}

// 2. 工厂方法
class ButtonFactory {
  createButton() { throw new Error('子类实现'); }
}
class PrimaryButtonFactory extends ButtonFactory {
  createButton() { return new PrimaryButton(); }
}

// 3. 抽象工厂
class UIFactory {
  createButton() {}
  createDialog() {}
}
class MaterialUIFactory extends UIFactory {
  createButton() { return new MaterialButton(); }
  createDialog() { return new MaterialDialog(); }
}

应用场景:简单工厂→根据type创建不同组件(antd Button类型);工厂方法→组件库主题切换;抽象工厂→跨平台UI框架(React Native/Web),一组配套组件的创建保证风格统一。