O padrão observer permite a definição de dependência um-para-muitos entre objetos para que todos os seus dependentes sejam notificados e atualizados automaticamente quando um objeto muda de estado.
Neste exemplo, estamos criando um produto de classe simples que outras classes podem observar registrando mudanças no método register(). Quando algo é atualizado, o método notifyAll() se comunicará com todos os observadores sobre essas mudanças.
class ObservedProduct { constructor() { this.price = 0; this.actions = []; } setBasePrice(val) { this.price = val; this.notifyAll(); } register(observer) { this.actions.push(observer); } unregister(observer) { this.actions.remove.filter(function (el) { return el !== observer; }); } notifyAll() { return this.actions.forEach( function (el) { el.update(this); }.bind(this) ); } } class Fees { update(product) { product.price = product.price * 1.2; } } class Profit { update(product) { product.price = product.price * 2; } } export { ObservedProduct, Fees, Profit };
Um exemplo completo está aqui? https://stackblitz.com/edit/vitejs-vite-kyucyd?file=main.js
Conclusão
Use este padrão quando as alterações no estado de um objeto podem exigir a alteração de outros objetos e o conjunto real de objetos é desconhecido de antemão ou muda dinamicamente.
Espero que você tenha achado útil. Obrigado por ler. ?
Vamos nos conectar! Você pode me encontrar em:
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