初面网初面网

工厂模式

一个工厂对象决定创建某种产品实例。主要创建同一类对象。

  • 优点

只需少量参数即可获取结果,不必关心内部实现

  • 缺点

但是内部新增构造函数还需要增加判断逻辑代码,当判断项过多的时候,函数会变得非常臃肿

  • 适用情况

少量判断即可创建对象的场景

小例子

判断用户权限,根据不同权限,侧边栏显示不同菜单项

class User{
  constructor(role, pages){
    this.role = role
    this.pages = pages
  }

  // static静态,可以直接类名.方法
  static UserFactory(role){
    switch(role){
      case "superadmin":
        return new User("superadmin", ["home","user-manage", "right-manage", "news-manage"])
      case "admin":
        return new User("admin", ["home","user-manage", "news-manage"])
      case "editor":
        return new User("editor", ["home","news-manage"])
      default:
        return new User("no", ["home"])
    }
  }
}

var user = User.UserFactory("admin");

更新于 2025/2/26