bom agora uma crítica ao tema, a alguns tempos temos visto Design Patterns, isso é algo excelente porém até que ponto? em termos de padronização de projeto muito bom, mas as vezes alguns design patterns acaba aumentando a complexidade e dificultando o desenvolvimento ao invés de auxiliar e agilizar o desenvolvimento...
um exemplo que tenho visto é relacionado aos padrões de projeto focados para o Hiberante, quanto a organização excelente, mas tenho notado uma quantidade de códigos similares em n-classes do projeto, onde muitas vezes se implementa e especializa uma classe para nessa nova apenas setar 1 método com um valor diferente porém a estrutura da classe é exatamente a mesma... isso poderia e pode ser evitado, realizar uma boa analise é possível construir uma classe realmente generica o suficiente que evite que essa "repetição" de código aconteça...
em termos de desenvolvimento isso tem sido um dos problemas do desenvolvimento java, príncipalmente na área de aplicações web, onde temos visto soluções como o Ruby on Rail sendo aclamado como a solução indicada, devido a sua produtividade, onde o desenvolvimento é rápido e focalizando ao que realmente interessa, implementar o modelo de negócio da aplicação...