设计模式 - 工厂模式

使用工厂模式,我们可以使用工厂函数来创建新对象。如果一个函数不使用 new 关键字就返回一个新对象,那么这个函数就是工厂函数!

假设我们的应用程序需要许多用户。我们可以使用 firstNamelastName 和 email 属性创建新用户。工厂函数还会向新创建的对象添加 fullName 属性,该属性返回 firstName 和 lastName

const createUser = ({ firstName, lastName, email }) => ({
  firstName,
  lastName,
  email,
  fullName() {
    return `${this.firstName} ${this.lastName}`;
  },
});

现在,我们可以通过调用 createUser 函数轻松创建多个用户。

const user1 = createUser({
  firstName: "John",
  lastName: "Doe",
  email: "john@doe.com"
});

const user2 = createUser({
  firstName: "Jane",
  lastName: "Doe",
  email: "jane@doe.com"
});

console.log(user1);
console.log(user2);

如果我们在创建相对复杂且可配置的对象时,工厂模式会很有用。 可能存在键和值的值依赖于特定环境或配置的情况。 使用工厂模式,我们可以轻松创建包含自定义键和值的新对象!

const createObjectFromArray = ([key, value]) => ({
  [key]: value,
});

createObjectFromArray(["name", "John"]); // { name: "John" }

优点

当我们必须创建多个共享相同属性的较小对象时,工厂模式非常有用。工厂函数可以根据当前环境或用户特定的配置轻松返回自定义对象。

缺点

在 JavaScript 中,工厂模式只不过是一个不使用 new 关键字而返回对象的函数。ES6 箭头函数允许我们创建每次隐式返回一个对象的小型工厂函数。但是,在许多情况下,每次创建新实例而不是新对象可能更节省内存。

class User {
  constructor(firstName, lastName, email) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
  }

  fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

const user1 = new User({
  firstName: "John",
  lastName: "Doe",
  email: "john@doe.com",
});

const user2 = new User({
  firstName: "Jane",
  lastName: "Doe",
  email: "jane@doe.com",
});

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值