Observer com objetos
O padrão Observer é usado em sistemas de eventos do navegador, em bibliotecas como Redux ou Vuex. Permite que partes do código reajam a mudanças sem precisar saber quem as disparou. Dominá-lo ajuda a criar código modular e desacoplado.
O PROBLEMA
Implemente Observer com inscrever, desinscrever, notificar.
EXEMPLO
const store = criarStore();
store.inscrever('mudanca', handler);
store.notificar('mudanca', {novo:'valor'})SOBRE O CONCEITO
Você vai criar um objeto store com métodos inscrever, desinscrever e notificar. A ideia é manter um dicionário onde cada chave é o nome do evento e o valor é um array de funções handler. Em inscrever, adicione o handler ao array. Em notificar, percorra o array com forEach e chame cada handler. O erro comum no desinscrever é não usar filter corretamente — por exemplo, usar filter sem retornar o array filtrado, ou remover apenas um índice fixo. Você precisa retornar um novo array com todos os handlers que não sejam o handler removido. Use const para as variáveis e {} para o objeto principal.
RESOLUÇÃO