tipos software patrones para orientado objetos lista diseño arquitectura aplicaciones oop design-patterns

oop - software - patrones de diseño para aplicaciones web



Aprendizaje/implementación de patrones de diseño(para principiantes) (25)

Soy un principiante confuso y un programador aficionado que trata de entender esto, así que perdóneme si mi pregunta es un poco escasa o no tiene mucho sentido.

Veo muchas preguntas sobre SO que giran en torno al uso de patrones de diseño, y me pregunto si alguien tiene buenos recursos para aprender e implementar patrones de diseño. Entiendo la idea general, y sé cómo / cuándo usar un par de ellos (métodos Singletons, Factory) pero sé que me estoy perdiendo.

(Por si acaso importa, mi idioma de preferencia es C # pero podría aprender de ejemplos en otros idiomas)


Patrones de diseño

Este sitio tutorial contiene las siguientes subsecciones

  • Intención de cada patrón de diseño
  • Estructura del mundo real para el patrón de diseño
  • Una declaración del problema
  • Discusión detallada sobre el problema
  • Lista de verificación sobre cómo llegar a un patrón
  • Reglas generales al llegar al patrón.
  • Fragmentos de código para el patrón de diseño que incluye C #, C ++, Delphi, Java y PHP

Este sitio también contiene una guía sobre Anti Patrones , UML y Refactorización .


Agregaría que el libro Patrones de diseño de la "Banda de los cuatro" es una biblia para cualquier persona que esté seriamente interesada en los patrones de diseño.


Antes de gastar dinero en libros, recomendaría la excelente página de patrones de diseño de Wikipedia. También para algo diferente Google para "screencasts de patrones de diseño" o búsqueda de "patrones de diseño" en YouTube . Obtener la misma información presentada de manera diferente a menudo ayuda a que caiga el centavo.

El libro de Gang of Four es el texto definitivo sobre los patrones más conocidos, pero no es tan fácil de leer y, con ejemplos de C ++, no es el favorito de todos.

El texto de Patrones de diseño de Head First es mucho más accesible, pero solo contiene un subconjunto de los patrones de Gang of Four.

Lo más importante es entender dónde y por qué un patrón en particular es útil. Después, busque en la web ejemplos de implementación en el idioma de su elección y experimente hasta que lo "obtenga". Comprenda un patrón antes de pasar al siguiente. Todos entienden algunos patrones mejor que otros (y hay cientos de menos conocidos).

Solo sigue enchufándote.



El libro original de Patrones de diseño es una lectura obligada para todos los programadores.

Es un libro excelente en todos los niveles: diseño, claridad, percepción, profundidad. Es uno de esos grandes libros que primero lees de principio a fin, y luego lo usas como referencia hasta que literalmente lo sepas al revés.

Puedes comenzar por la página de Wikipedia , pero también date un capricho con el gran libro.



Head First Design Patterns es uno bueno como otros ya mencionados. Además de esto, por supuesto, el libro original y los patrones de diseño C #. También hay buenos sitios web ya mencionados.

Además del autoaprendizaje, recomiendo seriamente comenzar o asistir a un grupo de estudio de patrones en su área. Consulte la Guía de aprendizaje para patrones de diseño para obtener una explicación y un gran orden para estudiar los patrones. Hicimos esto y honestamente puedo decir que no lo entendería tanto como lo hago ahora. Una reunión semanal con otras personas interesadas te mantiene sorprendentemente disciplinado cuando aprendes algo abstracto como patrones de diseño.

¡Felices estudios!


Los patrones comprenden el vocabulario de alto nivel que usan los programadores para hablar sobre diseño abstracto. Si está reutilizando una solución abstracta, es útil referirse a ella por su nombre. Si inventa un patrón, es profesional hacer una pequeña comprobación para asegurarse de que todavía no se le haya asignado un nombre. Si ha sido nombrado, entonces la descripción puede ser útil.

Después de codificar incluso un poquito, te darás cuenta de que estás escribiendo algo similar a lo que codificaste antes. Este es un patrón. Incluso si se trata de un patrón pequeño, vale la pena notarlo. ¿Hay un mejor patrón? ¿Ves ciertos pequeños patrones que cooperan entre sí para resolver un problema mayor? La próxima vez, cuando quieras resolver un problema mayor, todo el patrón te llegará a la mente como un solo pedazo. Desarrollar las líneas detalladas de código se vuelve mecánico.

Cuanto más advierta los patrones, más fácil será la programación, y más apreciará algunos de los mejores y más grandes patrones elaborados por otros programadores. Intenta dominar el patrón MVC. De una manera u otra, las variaciones aparecen por todos lados, incluso en pequeñas decisiones de diseño.


Los patrones de diseño son como cualquier función de la biblioteca, lea acerca de ellos, luego cuando surja un problema, el patrón de diseño estará en su "Toolchest". Hay muchos libros de patrones de diseño, todos modelados después de los patrones de diseño originales de "Pandillas de cuatro".

Para cualquier programador, creo que y el libro de Refactoring de Fowler son los requisitos absolutamente mínimos.


Los patrones de diseño son geniales por varias razones:

  1. te da un comienzo para resolver problemas comunes.
  2. proporciona a los desarrolladores un vocabulario para hablar sobre ciertas formas de resolver problemas de una manera muy compacta.
  3. cuando trabaje con desarrolladores que conocen patrones de diseño y utiliza patrones de diseño en sus soluciones, comprenderán las soluciones mucho más rápido.

Pero cuando tu objetivo es solo aprender patrones de diseño, creo que te estás perdiendo los fundamentos. Todos los patrones de diseño se basan en principios más comunes. Cohesión alta, bajo acoplamiento Principio cerrado abierto, SECO, Principio de sustitución de Liskov, etc. Para estos fundamentos, leería los siguientes libros en este orden:

  1. Head First Object-Oriented Analysis and Design (Cabeza Primero) [ILUSTRADO] (Paperback)
  2. Aplicación de UML y patrones (tapa dura)
  3. Principios, patrones y prácticas ágiles en C # (Serie Robert C. Martin) (Hardcover)

Después de eso, estás listo para la pandilla básica de cuatro patrones de diseño

  1. Patrones de diseño de Head First (Head First) [ILLUSTRATED] (Paperback)
  2. La biblia
  3. Un buen sitio web (no compre nada, no vale la pena) http://dofactory.com/Patterns/Patterns.aspx (algunas implementaciones de este sitio merecen una discusión)

El siguiente paso:

  1. Patrones de arquitectura de aplicaciones empresariales (Serie Signature de Addison-Wesley) (Hardcover)
  2. Los libros POSA

Y recuerda siempre: ¡el patrón no es el objetivo!


Mi consejo:

Lea mucho sobre los patrones de diferentes fuentes.

Intentar forzar tantos patrones como sea posible en todo el código que está escribiendo como este punto no va a dar buenos resultados. En cambio, permita que la información descanse dentro de su cerebro por un tiempo (léase: meses).

De repente, te encontrarás tropezando con un problema o una pieza de código y recordarás vagamente que has visto algo que podría funcionar como una solución a este problema en particular. Ahora es el momento de buscar los detalles del patrón en el que está pensando e intentar aplicarlo.

Eso es lo que funcionó para mí, de todos modos.


No tiene demasiado sentido para mí que alguien con muy poca experiencia profundice demasiado en los patrones de diseño. Es genial saber que existen, pero en este punto debe enfocarse más en otras cosas en lugar de solo aprender sobre patrones de diseño.

Son útiles en el contexto de un problema: como concepto para un desarrollador nuevo / principiante, en realidad no son demasiados valores prácticos, aparte de saber que debes hacer uso de ellos cuando y donde puedas.

EDITAR Para aclarar: muchos patrones de diseño son el resultado de problemas encontrados en algunos dominios. Difícilmente se puede esperar que un nuevo programador (IMO) conozca los patrones de diseño a usar para algunos problemas. Así como obtenemos algunos algoritmos en los estudios de CS, necesitamos comprender las cosas que podemos hacer con los patrones y sus beneficios, pero cuando una persona todavía está creando hello world o descubriendo stl, no hay mucha necesidad práctica de patrones de diseño. Los patrones son geniales Pero no son la bala de plata.

(Ni CASE (herramientas), ni / UML, ni SCRUM, ni TDD, ni STL, ni Java, ni XML, etc.) Todos estos son solo aspectos de nuestra profesión y tratan estos temas como el segundo venir es ingenuo.


Para mí y mis colegas, estudiamos Design Pattern que sigue en Pattern Study Group . Preparan una lista de cada patrón que debemos aprender en orden y también tienen las preguntas de apertura que hacen más discusión en grupo.


Para sitios web, un sitio muy bueno es http://ajaxpatterns.org , de uno de los desarrolladores del sitio web ajaxian


Patrones de arquitectura de aplicaciones empresariales (tapa dura) por Martin Fowler

Refactoring to Patterns (Tapa dura) de Joshua Kerievsky

Integración continua: mejora de la calidad del software y reducción del riesgo (Paperback) por Paul Duval et.al.

Más allá de la arquitectura de software: creación y mantenimiento de soluciones ganadoras (Paperback) por Luke Hohmann


Recomendaría echarle un vistazo a la quintología de Jean Paul Boodhoo (?) Sobre Patrones de diseño desmitificadores en DNRtv, las URL que figuran a continuación. Los videoscast afectan a Singleton, Abstract Factory entre otros, la diferencia es que puedes verlo codificar mientras analiza la teoría. Es bueno ver el almuerzo en un día lluvioso.

http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum=68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92


Si lee sobre patrones de diseño, notará que Java parece tener algunos de ellos implementados.

Mira la fuente de cualquier marco y puedes obtener información sobre patrones de diseño. Personalmente, no veo que se ajusten perfectamente a ninguno de mis códigos, a veces los ejemplos en libros y tutoriales parecen un poco idealizados, especialmente para el codificador solitario.

Los patrones de diseño no son para codificadores perezosos.


También sugiero tener un poco de coraje en Refactoring to Patterns una vez que hayas leído Head First Design Patterns.

Nota: Los ejemplos de código están en Java, pero deberían ser muy similares a los ejemplos de C # ...



Una anotación a los comentarios anteriores.

Una referencia rápida para patrones GOF

Aquí hay un buen lugar donde puede comenzar http://dofactory.com/Patterns/Patterns.aspx : puede encontrar un enlace a cada patrón, junto con las implementaciones correspondientes.

Sin embargo, recuerde que estos son patrones de GOF. También es posible que necesite leer y comprender patrones avanzados una vez que obtenga suficiente experiencia en OOAD. Head First Design Patterns es un buen comienzo, y después de hacer algún progreso, vaya con los Patrones de Arquitectura de Aplicaciones Empresariales de Martin Fowler.

Aplicando Patrones de Diseño - El Proceso del Pensamiento

Otro aspecto principal: la aplicación de patrones de diseño es tan importante como simplemente conocerlos. Leer estos artículos también puede ser útil.

Aplicando Patrones de Diseño Parte I

Aplicando Patrones de Diseño Parte II

Espero que esto ayude


Una vez que comprenda el concepto, revise el código fuente o el diseño de Eclipse, muchos ejemplos realmente buenos de estos patrones (no es de extrañar, Gamma fue uno de los diseñadores).





Aplicación de UML y patrones por Craig Larman. Comience desde lo básico de análisis, diseño y utiliza un escenario de caso simple. Presenta la mayoría de los patrones básicos de una manera simple.