Patrones de diseño que son y como te pueden ayudar

Posted on by

En este nuevo camino que estoy recorriendo en LifullConnect junto con Cokaido , he llegado a una nueva isla; que aunque había oído hablar de ella, me sonaba más bien a cosas para desarrolladoras muy experimentadas.

En cuanto comence a explorar esa isla me di cuenta de que es un conocimiento que debería tener presente toda desarrolladora ya que puede facilitar mucho tu trabajo y el de las que vendrán después de ti. 

Bienvenidas a la “isla” de los Design Patterns. o patrones de diseño en castellano. Estos, por simplificarlo de alguna manera, son conjuntos de técnicas que nos ayudan a resolver problemas comunes que nos encontramos en el desarrollo de software. 

Estos patrones poseen dos características:

  • Se debe haber comprobado su EFECTIVIDAD resolviendo problemas similares en otras ocasiones anteriores
  • Debe ser REUTILIZABLE , lo que significa que se puede aplicar a diferentes problemas de diseño en distintas circunstancias

Al principio me pareció un tema muy útil, pero demasiado denso. Hay muchos tipos de patrones, cada uno con sus peculiaridades y forma de aplicación. Asi que intentaré simplificar y condensar toda la información en esta pequeña guia rapida.

Los patrones de diseño se dividen en 3 grupos principales:

  • Creational Patterns : Agrupa los patrones enfocados a la “Creación” ya sea de clases o de objetos.
  • Behavioral Patterns: Nos ayuda a identificar patrones de comportamiento entre objetos, ayudándonos a dar flexibilidad a la hora de comunicarse entre entidades. 
  • Structural Patterns:  Patrones estructurales que nos ayudan a simplificar y agrupar las relaciones entre entidades

Como dije anteriormente hay muchos patrones de diseño con lo que voy a mencionar solo los que me han resultado más útiles o que he usado más de cada tipo 

Creational

  • Builder:Nos ayuda a crear una variedad de objetos complejos desde un objeto fuente que se compone de varias partes. Lo que nos permite crear objetos complejos con diferentes representaciones pero el mismo proceso de construcción.
  • Factory : A través de un “constructor virtual”, una interfaz, nos permite crear instancias de de diferentes subclases pero de diferentes tipos.  

Behavioral

  • Command : Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma, es muy util cuando recibimos ordenes a través de una única entrada pero que tienen comportamientos diferentes.  
  • Observer : Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
  • Strategy: Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.
  • State: Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.

Structural

  • Adapter: Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.

Personalmente este último ha sido el que más me ha llamado la atención, ya que junto al state me han sacado de algún apuro con muy buenos resultados.

Si queréis profundizar más en los patrones de diseño os recomiendo la página de https://sourcemaking.com/ , todas las fotos de ejemplo que he usado para esta entrada son de allí, tenéis ejemplos en varios lenguajes de todos los patrones e incluso un curso paso a paso por si quereis algo mas practico y no solo leer un montón de texto.

Por mi parte os dejo por aquí la pequeña presentación que realicé en mi oficina sobre el Adapter Pattern , junto con el enlace a mi github donde podéis encontrar el código de ejemplo que cree.

https://github.com/Lauragonfer/adapterPattern

Teniendo esto como base, cuando comenzamos a estudiar los patrones de diseño, nos damos cuenta de que hay alguno que son muy comunes y casi sin darnos cuenta empezamos a ver su utilidad en nuestro dia a dia. Así que sin duda os recomiendo emplear un tiempo a revisar qué tipos hay y fijaros si os puede servir alguno en el proyecto en el que estáis trabajando. 

Espero que este pequeño resumen os sea útil, y os haya picado el gusanillo, aun tengo mucho que contaros sobre mis avances en mi pequeño juego conversacional…pero eso ya es otra historia….

Comments

Leave a comment

Your email address will not be published.
Required fields are marked *