首頁  >  文章  >  web前端  >  JavaScript 設計模式 - 行為 - 狀態

JavaScript 設計模式 - 行為 - 狀態

WBOY
WBOY原創
2024-08-16 06:03:331070瀏覽

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