Patrones de diseño

Hola, quiero empezar a implementar patrones de diseño en mis aplicaciones y por tal motivo voy a empezar a estudiarlos, quisiera que me dieran su opinion sobre cuales son en los que me tengo que enfocar si ya estoy empezando con frameworks especificamente Hibernate y JSF.

He investigado y he visto los siguientes patrones, sobre cuales me enfoco?

Capa presentacion:

- Intercepting Filter
- Front Controller
- View Helper
- Composite View
- Service to Worker
- Dispatcher View

Capa de negocio e integracion:

- Busisness Delegate
- Service Locator
- Session Facade
- Transfer Object
- Transfer Object Assembler
- Value List Handler
- Composite Entity
- Data Access Object
- Service Activator

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Es alrevés

Los patrones de diseño, podriamos decir que son como recetas de cocina o tips para no inventar el hilo negro en la programación. Se llaman patrones justamente porque son cosas que aparecen una y otra vez en distintos sistemas y los programadores con experiencia ya saben cómo se hace y los identifican cuando hay que usarlos y cuando los ven en el código de alguien más. Existen desde hace mucho tiempo, pero era como algo informal hasta que un grupo de gente llegó y les puso nombre y con eso ahora se facilita porque ya hay un lenguaje común, y es más fácil decirle a alguien "pues usa un Singleton y ya" que tener que explicarle todo el concepto.

Pero no porque existan los tienes que meter en tu aplicación, así como a la fuerza. Lo que tienes que hacer con los patrones de diseño es estudiarlos y conocerlos, pero no tienes que meterlos a la fuerza en tu aplicación, a menos que estés desarrollando una especie de sampler o showcase de patrones de diseño.

OK

Como simpre muy acertado en tus comentarios Ezamudio. Bueno me podrias decir de los patrones que mencione cuales son los mas comunes a usar o al menos con cual me recomiendas empezar, tratare de estudiarlos o al menos conocerlos todos, pero en cuales segun tu experiencia me tengo que enfocar mas? En cuales debo profundizar?

Imagen de ezamudio

Básicos

Singleton, MVC (Model-View-Controller), DAO (Data Access Object). Si vas a usar EJB's o acceder manualmente a servicios publicados en JNDI entonces Service Locator es importante. Si vas a usar Spring, IoC (Inversion of Control) es esencial.

Antes de estudiar patrones

En mi opinión antes que aprender patrones te sugeriría leer primero un par de libros:

Applying UML and Patterns, por Craig Larman
http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented...

Agile Principles, Patterns, and Practices in C#, por Robert C. Martin (Uncle Bob)
http://www.amazon.com/Principles-Patterns-Practices-Robert-Martin/dp/013...

Del primero, existe una traducción al español, creo que de la segunda edición, y creo que se llama "UML y Patrones" y tiene en la portada un par de caballetes de pintor con un dibujo de un barquito y una representación UML del mismo.

El segundo contiene varias heurísticas muy útiles para hacer diseños orientados a objetos.

Dejaría los patrones para después.

Saludos

Javier Castañón

OK

Ok javier, buscare los libros. Como no ando muy bien en el ingles buscare la traduccion del primero y del segundo vere que encuentro en español o ya de plano de a poquito lo leere en ingles.