首页  >  文章  >  web前端  >  JavaScript 设计模式 - 行为 - 状态

JavaScript 设计模式 - 行为 - 状态

WBOY
WBOY原创
2024-08-16 06:03:331037浏览

JavaScript Design Patterns - Behavioral - State

状态模式允许对象在其内部状态发生变化时改变其行为。

在此示例中,我们使用 Order 类创建一个简单的状态模式,该类将使用 next() 方法更新状态。

const ORDER_STATUS = {
  waitingForPayment: 'Waiting for payment',
  shipping: 'Shipping',
  delivered: 'Delivered',
};

class OrderStatus {
  constructor(name, nextStatus) {
    this.name = name;
    this.nextStatus = nextStatus;
  }

  next() {
    return new this.nextStatus();
  }
}

class WaitingForPayment extends OrderStatus {
  constructor() {
    super(ORDER_STATUS.waitingForPayment, Shipping);
  }
}

class Shipping extends OrderStatus {
  constructor() {
    super(ORDER_STATUS.shipping, Delivered);
  }
}

class Delivered extends OrderStatus {
  constructor() {
    super(ORDER_STATUS.delivered, Delivered);
  }
}

class Order {
  constructor() {
    this.state = new WaitingForPayment();
  }

  next() {
    this.state = this.state.next();
  }
}

export { Order };

完整的例子在这里? https://stackblitz.com/edit/vitejs-vite-6zcfql?file=state.js

结论

当对象的行为取决于其状态,并且其行为在运行时根据该状态而变化时,请使用此模式。


希望您觉得它有帮助。感谢您的阅读。 ?

让我们联系吧!你可以在以下位置找到我:

  • 中: https://medium.com/@nhannguyendevjs/
  • 开发:https://dev.to/nhannguyendevjs/
  • 哈希节点:https://nhannguyen.hashnode.dev/
  • Linkedin: https://www.linkedin.com/in/nhannguyendevjs/
  • X(以前的 Twitter):https://twitter.com/nhannguyendevjs/
  • 请我喝杯咖啡: https://www.buymeacoffee.com/nhannguyendevjs

以上是JavaScript 设计模式 - 行为 - 状态的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn