Los patrones de diseño son modelos muestra que sirven como guía para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos del diseño de interacción o interfaces.
Aquí te cuento qué son los patrones de diseño, para qué sirven y los tipos de patrones de diseño. Recuerda que tenemos un Curso Profesional de JavaScript en Platzi para que inicies tu carrera profesional en el mundo de la programación.
Un patrón de diseño es una manera de resolver un problema dentro de un contexto. En otras palabras, los patrones son plantillas para soluciones a problemas comunes en el desarrollo de software que se pueden usar en diferentes contextos.
Los patrones de diseño dan soluciones fáciles a problemas complejos sin importar el lenguaje que estemos usando.
¿Sabías que la idea de los patrones comenzó en la arquitectura con Christopher Alexander? Los libros que publicó describen la manera de construir arquitectura dinámica que fue la idea inspiracional para el uso de patrones en software.
Cuando empezamos a desarrollar software, es común que cada quien utilice su propia lógica, conocimientos y experiencia para crear código. Y esto muchas veces resulta en desarrollos complejos que sólo su creador entiende.
Pero, ¿es posible desarrollar un módulo que otro programador pueda aprovechar entender y mejorar? La respuesta está en los patrones de diseño. Estos básicamente son modelos muestra que sirven como guía para que los programadores trabajen sobre ellos.
Un patrón de diseño debe cumplir al menos con los siguientes objetivos:
Existen muchos patrones, lo importante es saber que existen y preocuparnos por entenderlos y usarlos. De esta manera, podrás convertirte en un profesional en el mundo de la programación. En un mundo ideal todo programador debería aprender la sintaxis de la programación y luego los patrones de diseño.
Estos te servirán como guía para escribir código de la manera correcta y te ayudarán a resolver problemas de una manera estándar y profesional.
Los patrones de diseño se clasifican en tres tipos diferentes dependiendo del tipo de problema que resuelven. Estos pueden ser:
Su objetivo es resolver los problemas de creación de instancia. Estos ayudan a delegar responsabilidad de creación de objetos en situaciones necesarias.
Sus pilares fundamentales son encapsular el conocimiento de las clases y Ocultar cómo se crean y se instancian. Se subdividen a su vez así:
(Instancia única): nos garantiza la existencia de una única instancia para una clase.
Clona las instancias ya existentes.
Permite proporcionar una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas.
Ayuda a crear objetos complejos de manera sencilla, legible y escalable. Se utiliza en situaciones en las que debe construirse un objeto repetidas veces.
Nos ayuda a tener instancias de un objeto dado el tipo.
Su nombre es muy descriptivo, se ocupa de resolver problemas sobre la estructura de las clases, es decir, se enfocan en cómo las clases y objetos se componen para formar estructuras mayores.
Aquí encuentras:
Separa la abstracción de la implementación.
Agrega funcionalidades a una clase de forma dinámica.
Nos provee una interfaz unificada y simple para acceder a un sistema más complejo.
Cuando dos clases no se entiende, el adapter es mediador y adapta una clase para que la otra la entienda.
Ayuda a construir objetos complejos a partir de otros más simples.
Se refiere a los objetos que queremos reutilizar para crear objetos más ligeros.
Es un elemento que se encarga de introducir un nivel de acceso a una clase. Ese nivel de acceso puede ser por seguridad o por complejidad.
Nos ayuda a resolver problemas relacionados con el comportamiento de la aplicación. Ofrece soluciones respecto a la interacción y responsabilidad entre objetos y clases. Por ejemplo:
Un objeto le pasa el estado interno a muchos objetos que están interesados.
Simplifica las interconexiones de objetos.
Separa acciones que pueden ser ejecutadas desde varios puntos diferentes de la aplicación a través de una interfaz sencilla.
Este se utiliza en relación a objetos que almacenan colecciones de otros objetos.
Define un objeto que media entre otros objetos.
Se utiliza para restaurar el estado de un objeto a un estado anterior.
Permite a un objeto alterar su comportamiento cuando su estado interno cambia.
Permite que un objeto tenga parte o todo su comportamiento definido en términos de otro objeto que sigue una interfaz particular.
Se centra en la reutilización del código para implementar pasos para resolver problemas.
Se utiliza para separar la lógica y las operaciones realizadas sobre una estructura compleja.
En desarrollo web tenemos dos opciones principales: Desarrollo Frontend y Desarrollo Backend. Algunas de las personas que recién terminan el Curso Gratis de Programación Básica de Platzi suelen preguntarse ¿es mejor el desarrollo frontend? ¿es mejor el desarrollo backend?
Los frontends tienden a ser programadores, pero hay diseñadores que también hacen frontend. Son los encargados de maquetar la estructura semántica del contenido (HTML), codificar el diseño en hojas de estilo (CSS) y agregar la interacción con el usuario (Javascript).
Un backend compone el acceso a bases de datos y generación de plantillas del lado del servidor. En backend se encargan de implementar MySQL, Postgres, SQL Server o MongoDB. Luego, un lenguaje como PHP o JSP, o frameworks como RoR, Django, Node.JS o .NET se conectan a la base de datos.
Y si bien los patrones de diseño son muchos, son útiles dentro de tu ruta profesional como desarrollador o desarrolladora backend. En nuestro curso web developer, aprenderás sobre esto y mucho más.
Te comparto la ruta de aprendizaje de David Toca para que te hagas una idea de cómo podría ser tu ruta de aprendizaje backend en Platzi:
Y si quieres profundizar en tus conocimientos inicia gratis el Curso Profesional de JavaScript donde aprenderás su funcionamiento, desarrollar plugins y estructurar mejor tu código.
seria bueno un cursito de patrones de diseño no???
Justo ando haciendo un trabajo de Arquitectura de software y este artículo me pasteleó todo. Gracias Platzi 😄
Qué debería aprender primero?
POO ó Patrones de diseño
POO, dado que son las bases para poder aplicar y entender Patrones de diseño