Un Patrón de Diseño es una solución repetible a
un problema recurrente en el diseño de software.
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Segun el nivel de abstración basicamente existen los siguientes:
Patrones arquitectónicos
Centrados en la arquitectura del sistema.
Patrones de diseño
Esquemas para refinar los subsistemas o componentes de un sistema de software, o sus relaciones.
Un libro clásico de la década de los 90 escrito por the “Gang of Four” describe a detalle un conjunto de 23 patrones de diseño.
Entre los mas conocidos tenemos:
Patrones creacionales
Abstraen el proceso de instanciación de
objetos, ayudando a que el sistema sea independiente de cómo se crean, componen y representan sus objetos.
Patrones estructurales
Se encargan de cómo se combinan clases y objetos parar formar estructuras más grandes.
Patrones de comportamiento
Tienen que ver con algoritmos y asignación de responsabilidades.
Estos patrones se focalizan en el flujo de control dentro de un sistema.
Bibliografía recomendada
JavaScript Patterns Collection
http://shichuan.github.io/javascript-patterns/
http://addyosmani.com/resources/essentialjsdesignpatterns/book/
Ejemplos de patrones arquitectónicos incluyen los siguientes:
El patrón de arquitectura "modelo vista controlador", es una filosofía de diseño de aplicaciones, compuesta por:
Es el patrón que soporta Modelos de Dominios complejos y enormes. Son los famosos ORM (Object Relational Model), como Hibernate o Top Link, que transforman de forma transparente los objetos del dominio en tablas y entidades del mundo relacional de las bases de datos.
Martin Fowler - Patterns of Enterprise Application Architecture
http://martinfowler.com/eaaCatalog/dataMapper.html