Strategy Pattern

Depois de uma semana sofrendo com um algoritmo para fazer load-balance e alocacão de portas para um servidor de live-streaming, finalmente consegui sair com uma solucão 100% funcional e que deixou todos felizes.

Foram mais de 12 classes, 2 bibliotecas externas, um protocolo de criptografia decomposto, uma pseudo-linguagem de macrosubstituicão enganada e um banco de dados mais um container de aplicacão sem pessimist locking - mesmo que isso fizesse parte dos requisitos funcionais.

Licão aprendida (ou seria reafirmada)?

Sempre utilize strategy pattern mais algum mecanismo de factory (qualquer um que abstraia a classe implementadora completament) . Fiquei muito feliz de conseguir trabalhar na implementacão da inteligência sem afetar muito as interfaces. Sinal que o meu design original era à prova de mudancas comportamentais do código: um ótimo sinal!

Detalhe assustador: o que era para ser uma simples alocacao de uma série de números virou um gigantesco sub-sistema de load-balancing com SSH, templates Velocity flexíveis e uma implementacão manual de Optimistic locking.

Como sempre bati o pé com meus alunos:  o strategy pattern é o melhor design pattern que poderiam ter inventado (ou, como os intelectuais gostam de dizer: “descoberto”) e, ao mesmo tempo, o mais esquecido, tanto na prática quanto na didática.

Isso me inspirou até a escrever um artigo sobre isso… em breve.

Tiago Luchini · 15 Jun 2007 · technology