# 工厂模式

什么是

工厂模式是由一个方法来决定到底要创建哪个类的实例,而这些实例经常都拥有相同的接口。

这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。

# 分类和区别

类型 描述
简单工厂 简单工厂是将创建对象的步骤放在父类进行
工厂方法 工厂方法是延迟到子类中进行
/ 它们两者都可以总结为:“根据传入的字符串来选择对应的类”。

# 具体实现

TIP

实现简单工厂

var UserFactory = function (role) {
  function Admin() {
    this.name = "管理员";
    this.viewPage = ["首页", "查询", "权限管理"];
  }
  function User() {
    this.name = "普通用户";
    this.viewPage = ["首页", "查询"];
  }
  switch (role) {
    case "admin":
      return new Admin();
      break;
    case "user":
      return new User();
      break;
    default:
      throw new Error("参数错误, 可选参数: admin、user");
  }
};
var admin = UserFactory("admin");
var user = UserFactory("user");

TIP

实现工厂方法

//安全模式创建的工厂方法函数
var UserFactory = function (role) {
  if (this instanceof UserFactory) {
    var s = new this[role]();
    return s;
  } else {
    return new UserFactory(role);
  }
};
//工厂方法函数的原型中设置所有对象的构造函数
UserFactory.prototype = {
  Admin: function () {
    this.name = "管理员";
    this.viewPage = ["首页", "查询", "权限管理"];
  },
  User: function () {
    this.name = "用户";
    this.viewPage = ["首页", "查询"];
  },
};
//调用
var admin = UserFactory("Admin");
var user = UserFactory("User");
上次更新时间: 6/8/2023, 9:23:17 PM

大厂最新技术学习分享群

大厂最新技术学习分享群

微信扫一扫进群,获取资料

X