software reusable patterns patrones oriented lista ejemplos diseño arquitectura design-patterns

design-patterns - reusable - patrones de diseño java



¿Cómo estudiar patrones de diseño? (23)

He leído alrededor de 4-5 libros sobre patrones de diseño, pero aún no siento que me haya acercado al nivel intermedio en los patrones de diseño.

¿Cómo debo ir estudiando patrones de diseño?

¿Hay algún buen libro para patrones de diseño?

Sé que esto vendrá solo con experiencia, pero debe haber alguna forma de dominar esto.


¿Has leído "Los patrones de diseño explicados", por Allan Shalloway.

Este libro es muy diferente de otros libros de patrones de diseño porque no es tanto un catálogo de patrones, sino que principalmente presenta una forma de descomponer un espacio problemático que se asigna fácilmente a los patrones.

Los problemas se pueden descomponer en dos partes: cosas que son comunes y cosas que varían. Una vez hecho esto, asignamos las cosas comunes a una interfaz, y las cosas que varían a una implementación. En esencia, muchos patrones caen en este "patrón".

Por ejemplo, en el patrón de la Estrategia, las cosas comunes se expresan como el contexto de la estrategia, y las partes variables se expresan como las estrategias concretas.

Encontré este libro muy estimulante en contraste con otros libros de patrones que, para mí, tienen el mismo grado de emoción que leer una guía telefónica.



Creo que necesita examinar algunos de los problemas que ha encontrado como desarrollador en los que se retiró el cabello después de que tuvo que revisar su código por décima vez debido a otro cambio de diseño. Probablemente tengas una lista de proyectos en los que sentiste que hubo mucho trabajo y dolor.

De esa lista puede derivar los escenarios que los patrones de diseño pretenden resolver. ¿Ha habido un momento en el que necesitó realizar la misma serie de acciones en diferentes conjuntos de datos? ¿Necesitará tener capacidad para una aplicación en el futuro pero desea evitar volver a trabajar toda su lógica para las clases existentes? Comience con esos escenarios y regrese al catálogo de patrones y sus problemas respectivos que se supone que deben resolver. Es probable que veas algunas coincidencias entre el GoF y tu biblioteca de proyectos.


Creo que también es difícil estudiar los patrones de diseño. Debe saber más sobre la POO y algunas experiencias con el desarrollo de aplicaciones medianas a grandes. Para mí, estudio como un grupo de desarrolladores para hacer discusión. Seguimos una Guía de aprendizaje para diseñar patrones que han completado el estudio de patrones. Hay desarrolladores de C # y JavaScript que se unen. Para mí, es algo que los códigos de escritura del desarrollador de C # en JavaScript y el desarrollador de JavaScript hacen lo mismo para los códigos de C #. Después de salir de una reunión, también investigo y leo algunos libros en casa para revisar. La mejor manera de entender y recordar en mi mente es hacer un blog con ejemplos tanto en C # como en JavaScript aquí http://tech.wowkhmer.com/category/Design-Patterns.aspx .

Sugeriría primero, antes de ir a cada patrón de diseño, por favor, comprenda el nombre de los patrones. Además, si alguien conoce el concepto, solo explique y dé un ejemplo no solo de programación sino también en el mundo de la lectura.

por ejemplo:

Método de fábrica:

Lea el mundo: solo doy dinero $ 5, $ 10 o $ 20 y producirá pizza de vuelta sin saber nada sobre cómo se produce, solo recibo una pizza pequeña, mediana o grande que depende de la entrada de dinero para que pueda comer o hacer lo que sea.

Programación: El cliente simplemente pasa el valor del parámetro $ 5, $ 10 o $ 20 al método de fábrica y devolverá el objeto Pizza. Así que el cliente puede usar ese objeto sin saber cómo se procesa.

No estoy seguro de que esto pueda ayudarte. Depende del nivel de conocimiento de las personas que se unen a la reunión.



Descubrí que es un poco difícil comprender o comprender los beneficios de algunos patrones hasta que uno entiende los problemas que resuelven y las otras (peores) formas en que se han implementado los problemas.

Aparte de los libros de GOF y POSA, realmente no he leído ninguno, así que no puedo darte otras recomendaciones. Realmente solo tiene que comprender los dominios de problemas y creo que muchos desarrolladores menos experimentados no podrán apreciar los beneficios de los patrones. Esto no es leve contra ellos. Es mucho más fácil abrazar, entender y apreciar las buenas soluciones cuando uno tiene que luchar primero con las alternativas pobres.

Buena suerte


El último de nettuts .

Es un buen recurso para principiantes.


Hágase estas preguntas:

¿Qué hacen?

¿Qué disocian / pareja?

¿Cuándo deberías usarlos?

¿Cuándo no debes usarlos?

¿Qué característica de lenguaje faltante haría que desaparezcan?

¿En qué deuda técnica incurres al usarla?

¿Hay una manera más sencilla de hacer el trabajo?


He dirigido algunos grupos de discusión sobre patrones de diseño ( nuestro sitio ) y he leído 5 o 6 libros de patrones. Recomiendo comenzar con el libro Head First Design Patterns y asistir o comenzar un grupo de discusión. El libro Head First puede parecer un poco Hasboro al principio, pero a la mayoría de las personas les gusta después de leer un capítulo o dos.

Utilice el recurso destacado: la Guía de aprendizaje de Joshua Kereivisky sobre patrones de diseño para el orden de patrones y para ayudar a su grupo de discusión. Por experiencia, el único cambio que sugiero al pedido es poner la Estrategia primero. La mayoría de los desarrolladores de hoy en día han experimentado una buena o mala encarnación de una fábrica, por lo que comenzar con Factory puede generar mucha conversación y confusión sobre el patrón. Esto tiende a centrarse en cómo estudiar y aprender patrones, lo cual es bastante esencial. primera cita.


La forma en que aprendí los patrones de diseño es escribiendo mucho software realmente terrible. Cuando tenía unos 12 años, no tengo idea de lo que era bueno o malo. Acabo de escribir montones de código de espagueti. Durante los próximos 10 años más o menos, aprendí de mis errores. Descubrí qué funcionó y qué no. De forma independiente, inventé la mayoría de los patrones de diseño comunes, de modo que cuando escuché por primera vez qué eran los patrones de diseño, me entusiasmó mucho conocerlos, y luego me decepcionó mucho que fuera solo una colección de nombres de cosas que ya sabía de manera intuitiva. (esa broma sobre aprender a ti mismo C ++ en 10 años no es realmente una broma)

Moraleja de la historia: escribe mucho código. Como han dicho otros, practicar, practicar, practicar. Creo que hasta que no entiendas por qué tu diseño actual es malo y busques una mejor manera, no tendrás una buena idea de dónde aplicar varios patrones de diseño. Los libros de patrones de diseño deberían proporcionarle una solución refinada y una terminología común para discutirlo con otros desarrolladores, no una solución pegada a un problema que no comprende.


La mejor manera es comenzar a codificar con ellos. Los patrones de diseño son un gran concepto que es difícil de aplicar simplemente leyendo sobre ellos. Tome algunas implementaciones de muestra que encuentre en línea y construya alrededor de ellas.

Un gran recurso es la página Data & Object Factory . Repasan los patrones y te dan ejemplos conceptuales y reales. Su material de referencia es grande, también.


La noción de que leer patrones de diseño, practicar la codificación de los mismos realmente no ayudará a la OMI. Cuando lea estos libros 1. Busque el problema básico que resuelve un patrón de diseño en particular, comenzando con los patrones de creación es su mejor apuesta. 2. Estoy seguro de que ha escrito código en el pasado, analice si enfrentó los mismos problemas que los patrones de diseño tienen como objetivo proporcionar una solución. 3. Trate de rediseñar / re código de factor o quizás comenzar de nuevo.

Acerca de los recursos puedes consultar estos

  1. www.dofactory.com
  2. Patrones de diseño: elementos de software orientado a objetos reutilizables (serie de computación profesional Addison-Wesley) por Erich Gamma, Richard Helm, Ralph Johnson y John M. Vlissides
  3. Patrones de arquitectura de aplicaciones empresariales por Martin Fowler

1 es inicio rápido, 2 será un estudio en profundidad. 3 lo explicará o lo hará pensar lo que aprendió en 2 programas de software empresarial.

Mis 2 centavos ...


Leí tres libros y aún no entendía los patrones muy bien hasta que leí los patrones de diseño de Head First por OReilly. Este libro me abrió los ojos y realmente explico bien.


Los patrones de diseño son solo herramientas, algo así como funciones de biblioteca. Si sabes que están allí y su función aproximada, puedes sacarlos de un libro cuando sea necesario.

No hay nada mágico en los patrones de diseño, y cualquier buen programador descubrió el 90% de ellos por sí mismos antes de que saliera algún libro. En su mayor parte, considero que los libros son los más útiles para definir simplemente los nombres de los distintos patrones para que podamos analizarlos más fácilmente.


Mi sugerencia sería una combinación de implementar algunos de ellos y analizar algunas implementaciones de ellos. Por ejemplo, dentro de .Net, hay usos de patrones de adaptadores si observamos Adaptadores de datos, así como algunos otros si uno investiga un poco el marco.


Mis dos centavos por tal y vieja pregunta.

Algunas personas ya mencionadas, practican y refactorizan. Creo que el orden correcto para aprender sobre patrones es este:

  1. Aprender el desarrollo guiado por pruebas (TDD)
  2. Aprender refactorización
  3. Aprender patrones

La mayoría de la gente ignora 1, muchos creen que pueden hacer 2 y casi todo el mundo va directo por 3.

Para mí, la clave para mejorar mis habilidades de software fue aprender TDD. Puede ser un tiempo prolongado de codificación lenta y dolorosa, pero escribir tus pruebas primero te hace pensar mucho sobre tu código. Si una clase necesita demasiada repetición o se rompe fácilmente, empiezas a notar los malos olores bastante rápido

El principal beneficio de TDD es que pierdes el miedo de refactorizar tu código y te obligas a escribir clases que sean altamente independientes y cohesivas. Sin un buen conjunto de pruebas, es demasiado doloroso tocar algo que no está roto. Con la red de seguridad, realmente se aventurará en cambios drásticos en su código. Ese es el momento en el que realmente puedes empezar a aprender de la práctica.

Ahora llega el momento en el que debe leer libros sobre patrones, y en mi opinión, es una completa pérdida de tiempo esforzarse demasiado. Solo entendí los patrones realmente bien después de darme cuenta de que hice algo similar, o podría aplicar eso al código existente. Sin las pruebas de seguridad, o los hábitos de refactorización, habría esperado hasta un nuevo proyecto. El problema de usar patrones en un proyecto nuevo es que no ve cómo impactan o cambian un código de trabajo. Solo entendí un patrón de software una vez que reformulé mi código en uno de ellos, nunca cuando introduje uno nuevo en mi código.


No sé cuál es el mejor libro, pero los puristas podrían decir Patrones de diseño: elementos de software orientado a objetos reutilizables

En cuanto a mi favorito personal, me gusta Head First Design Patterns publicado por O''Reilly. Está escrito en una voz conversacional que me atrae. Cuando lo leí, revisé mi código fuente al mismo tiempo para ver si se aplicaba a lo que estaba leyendo. Si lo hizo, lo refactoré. Así es como aprendí la Cadena de Responsabilidad.

Práctica práctica práctica.



Para un principiante, los patrones de Head First Design harían, una vez que estemos familiarizados con todos los patrones, luego intentemos visualizar los objetos en tiempo real en esos patrones.

El libro lo ayudará a comprender los conceptos básicos, a menos que, hasta que haya implementado en el mundo real, CANT sea un maestro de los patrones de diseño.


Práctica práctica práctica. Creo que de 4 a 5 libros es incluso un ejercicio de lectura excesivo sin una buena cantidad de práctica. Creo que la mejor forma de hacerlo es comenzar a refactorizar sus proyectos actuales utilizando los patrones. O si no tiene ningún proyecto en el que esté trabajando activamente, entonces hágalo a su manera y luego intente refactorizar los patrones .

No puedes apreciarlos completamente si no has sufrido los problemas que resuelven. Y, por favor, tenga en cuenta que no son balas de plata, no necesita memorizarlas y presionarlas para aplicarlas sobre la marcha. Mis dos centavos..


Práctica práctica práctica.

Puedes leer sobre tocar el violonchelo durante años, y aún así no ser capaz de hacer una reverencia al instrumento y hacer algo que suene como música.

Los patrones de diseño se reconocen mejor como un problema de alto nivel; uno que solo es relevante si tiene la experiencia necesaria para reconocerlos como útiles. Es bueno que reconozca que son útiles, pero a menos que haya visto situaciones en las que se aplicarían o aplicaron, es casi imposible entender su verdadero valor.

Donde se vuelven útiles es cuando reconoces patrones de diseño en el código de otros, o reconoces un problema en la fase de diseño que encaja bien con un patrón; y luego examine el patrón formal, y examine el problema, y ​​determine qué es el delta entre ellos, y qué dice eso sobre el patrón y el problema.

Es realmente lo mismo que la codificación; K&R puede ser la "biblia" para C, pero leerla de principio a fin varias veces no brinda una experiencia práctica; No hay reemplazo para la experiencia.


Recomiendo HeadFirst DesignPattern. Leer el libro no es suficiente, después de asimilar los conceptos que necesita para encontrar las respuestas a las preguntas que surgen en su mente y tratar de encontrar las aplicaciones de la vida real en las que se pueden usar estos patrones. Estoy haciendo lo mismo y comencé a hacer preguntas, incluso esas preguntas parecen ridículas.


Se han dado muchos buenos ejemplos. Me gustaría añadir uno:

Aplicar mal No necesita hacer eso intencionalmente, sucederá cuando intente aplicarlos en su ajuste inicial de patrón de diseño. Durante ese tiempo, todos los problemas que verá parecerán ajustarse exactamente a un patrón de diseño. A menudo, todos los problemas parecen encajar en el mismo patrón de diseño por alguna razón (Singelton es un candidato principal para eso).

Y vas a aplicar el patrón y será bueno. Y algunos meses después, tendrá que cambiar algo en el código y ver que usar ese patrón en particular no fue tan inteligente, porque se codificó en una esquina y necesita refactorizar nuevamente.

Por supuesto, esa no es realmente una respuesta para aprender y aprender en 21 días, pero según mi experiencia, es lo más probable que te dé una buena idea del asunto.