"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Padrões de Design JavaScript - Comportamental - Estado

Padrões de Design JavaScript - Comportamental - Estado

Publicado em 2024-08-20
Navegar:965

JavaScript Design Patterns - Behavioral - State

O padrão state permite que um objeto altere seu comportamento quando seu estado interno muda.

Neste exemplo, criamos um padrão de estado simples com uma classe Order que atualizará o status com o método 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 };

Um exemplo completo está aqui? https://stackblitz.com/edit/vitejs-vite-6zcfql?file=state.js

Conclusão

Use esse padrão quando o comportamento do objeto depender de seu estado e seu comportamento mudar em tempo de execução dependendo desse estado.


Espero que você tenha achado útil. Obrigado por ler. ?

Vamos nos conectar! Você pode me encontrar em:

  • Médio: https://medium.com/@nhannguyendevjs/
  • Desenvolvedor: https://dev.to/nhannguyendevjs/
  • Hashnode: https://nhannguyen.hashnode.dev/
  • Linkedin: https://www.linkedin.com/in/nhannguyendevjs/
  • X (anteriormente Twitter): https://twitter.com/nhannguyendevjs/
  • Compre um café para mim: https://www.buymeacoffee.com/nhannguyendevjs
Declaração de lançamento Este artigo está reproduzido em: https://dev.to/nhannguyendevjs/javascript-design-patterns-behavioral-state-3e9b?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3