Programando para interfaces. A sitação do livro do GOF é excelente. Mas gostaria de colocar um outro ponto de vista. Hoje além da escola que prega o design antecipatório de software (que é onde os design patterns entram) existe uma outra escola de redesign constante (onde refactoring entra). Refactoring é exatamente redesign, é mudança de design de código já escrito. Para que serve e para onde leva?
Segundo esta filosofia, você deve fazer sempre a coisa mais simples que possa funcionar (desde que esta coisa simples não contenha nenhum código duplicado). Acredita-se que o melhor estado do software no momento da mudança é: "simples". Se for simples é fácil de mudar. Contudo, se você fez a coisa mais simples que pudesse funcionar, com certeza não criou interfaces e flexibilidades desnecessárias (no momento). Mas e agora quando chega a hora de inserir uma nova funcionalidade, o código não está preparado! Não! Mas está simples e agora é a hora de aplicar refactoring. Se a nova funcionalidade não se encaixa bem no software como está você faz as mudanças necessárias para que ele ganhe um novo design, flexivel APENAS onde é necessário. Esta filosofia vem da idéia de que atualmente o mundo dos negócios e das tecnologias muda muito rápido, e você não pode prever TODAS as mudanças, por isso um design antecipatório pode não flexibilizar pontos que seriam necessários no futuro e ao mesmo tempo adicionar complexidade por flexibilizar pontos que não seriam necessários no futuro. Estas idéias são extremamente práticas e hoje são adotadas por várias metodologias de software conhecidas como "Agile" (http://agilealliance.org) Umas das metodologias mais conhecidas e bem estruturadas nesta linha é eXtreme Programming ou XP. (http://www.extremeprogramming.org/) Para uma discussão nacional sobre o assunto, você pode se tornar membro dos XPers, grupo nacional de estudo e divulgação de XP (http://groups.yahoo.com/group/xpers) O equivalente do livro do GOF (Design Patterns) no pensamento de refactoring é: Refactoring - Improving the Design of Existing Code Autor: Martin Fowler. Nota Final: Após o uso de refactoring, muitos design patterns acabarão sendo aplicados. A vantagem é que você os aplica apenas onde e quando são necessários e não logo de cara onde você "PENSA" (ou PREVÊ) que sejam necessários. (Os seres humanos não são muito bons em previsões). Ricardo Munhoz Santiago __________________________________________________ Do You Yahoo!? NEW from Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month. http://geocities.yahoo.com/ps/info1 ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------