Opinião minha, e pode ser q a maioria discorde, mas acho que nunca é muito cedo e nem muito tarde para você adquirir boas práticas.
Claro que você tem que ir usando e aprendendo os design patterns que se enquadrem na sua realidade, por exemplo, que vc consiga implementar ou veja uma necessidade dele, e não apenas sair usando só por usar.
Você vai notar que para implementar ealguns deles vai precisar saber alguma coisa, mas outros mais simples, como DAO por exemplo, acho que não tem porque não utilizar desde o início.
Acho que aprendendo os padrões muito cedo leva ao mal de ter uma solução na mão sem um problema p/ resolver. Aí acaba resolvendo um problema com a solução errada.
Eu diria que o tempo certo é depois de alguns meses ralando num sistema de verdade, bolando soluções próprias. Após isso você vai abrir o livro de padrões de projeto, olhar p/ o capítulo e falar “já tive este problema”.
Eu sou da opinião (e pelo menos aconteceu comigo assim), que você deve aprender os dois juntos. Alias, você pode ir aprendendo várias coisas juntos, tais como: Java, Design Patterns, Agile, DDD, TDD, etc etc etc… E porque não outras linguagens/tecnologias como Ruby, Scala, Groovy?
Antes que falem: é impossível ser especialista em tudo!! Eu realmente concordo, por isso eu digo, mantenha o foco em uma determinada área de atuação mas também fique de olho em outras áreas/tecnologias também. Ninguem sabe o suficiente para não estudar mais
[quote=rmalati]Concordo com o que disse o pessoal.
É melhor esperar ter o problema para aplicar um Pattener.
Mas estudar nunca é demais!
[/quote]
Por favor né?
Ontem++
Ordem dos cinco iniciais de aprendizado recomendada em minha opinião:
Adapter (Vai ver muito em Swing)
Strategy (Vai ver em conceitos como IoC/DI/TDD)
method/Factory
Builder (Vai ver em conceitos de Fluent Interfaces)
Decorator
No nivel zero. Para o inciante encare os padrões como receitas. Use e pronto.
à medida que o seu conhecimento aumentar tente enxergar neles regras de OO.
Na realidade se vc seguir a regras de OO num inicio vc vai chegar nos padrões naturalmente.
Tlv vc já use algum e não saiba…
Os padrões base para comecar :
Observer - tb chamado Listener - muito usado em todo o lugar porque é a base mecanismos orientados a eventos em java
Composite - muito usado em estruturas de interface gráfica e coisas como XML e HTML.
Value Object - muito utilizado para conter valores no seu sistema. Várias versões particulas existem como Money para quantidades monetárias.
Factory - para encapsular as regras para a criação de um objeto.
Share Object - para vc poder partilhar um objeto com todos os outros objetos do seu sistema.
Isso acontece quando não se conhece as motivações por trás dos patterns. Os desenvolvedores não aplicam bem porque na verdade possuem muito pouco conhecimento sobre o assunto.
Canso de dizer que o Applying UML and Patterns é uma excelente introdução ao projeto de objetos. Lá o autor explica as bases da maioria dos patterns, cita ótimas referências, e desenvolve um sistema exemplo do início ao fim.
Além disso está nesta lista onde tentam eleger os 10 melhores livros de java. E na minha opinião (e na do Martin Fowler também, vide capa do livro) é a melhor introdução ao projeto de objetos.