Sistema de plugins
Sistemas de plugins são usados em frameworks como Vue, Express e ferramentas como Webpack para permitir extensões sem modificar o código principal. Em vez de reescrever funcionalidades, você adiciona comportamentos externos de forma limpa e reutilizável. Dominar esse padrão ajuda a criar bibliotecas que outras pessoas (ou você mesmo) possam expandir facilmente.
O PROBLEMA
Implemente sistema de plugins: App com registerPlugin, use. Plugins são classes com install(app).
EXEMPLO
const app = new App();
app.registerPlugin(new LoggerPlugin());
app.use("logger").log("iniciando") → "[LOG] iniciando"SOBRE O CONCEITO
O padrão Plugin define uma interface install(app) que cada plugin implementa, recebendo a instância do app. No construtor do App, armazene plugins em um Map. O método registerPlugin insere o plugin no mapa, e use recupera e chama install passando this. Erro comum: plugin não ter acesso ao app – isso ocorre se esquecer de passar this ao chamar install; o plugin precisa receber o app para registrar métodos. Outro erro: conflito de nomes – solução é usar um namespace ou prefixo nos métodos registrados, mas aqui o foco é a estrutura de classes: evite function ou objetos literais, use sempre class e new.
RESOLUÇÃO