Implementação não é nada. Design é tudo!
Quando estamos construindo um sistema OO, a base desse sistema é fundamental. Já é bíblica a frase " O Homem que construiu sua casa sobre a areia" . Para termos uma aplicação robusta, modular, escalável precisamos ter uma base muito bem fomentada, para isso o design é essencial. Pois como podemos construir artefatos que atendam essas premissas sobre uma base podre? A resposta é obvia, mas nem sempre o obvio é tão obvio. O Design de uma aplicação é mais importante do que qualquer tecnologia de implementação até mesmo a JEE. Não adianta usarmos Spring, Hibernate, MVC, etc se não temos: Alta coesão Baixo acoplamento A Questão chega a ser fetal, acoplamento gera merda. Quanto mais acoplamento pior, se os artefatos estão todos amarrados é muito difícil modificar o código e conseqüentemente a manutenção é penosa. Mas como podemos diminuir o acoplamento e aumentar a coesão? Utilizando Design Patterns Modelagem UML Divisão de papeis Utilizando Interfaces e Herança Re-utilizando des