Patrones de diseño: comprenda la importancia con ejemplos de la vida real

Patrones de diseño de software… El patrón de diseño de software es una solución general y reutilizable para un problema común dentro de un contexto dado en el diseño de software. Esta es la definición escrita en Wikipedia para los patrones de diseño de software… La definición anterior tiene sentido para usted si es un desarrollador experimentado y pasó algún tiempo escribiendo el código de algún software, pero la misma línea se le pasa por la cabeza y suena aburrida si eres un principiante y lo desconoces por completo. Hablemos primero con desarrolladores experimentados… ( principiantes, esperen un momento o salten el siguiente párrafo ). 

Design-Patterns-Understand-The-Importance-With-Real-Life-Examples

Patrones de diseño de software… tema interesante, ¿sí? Es posible que haya disfrutado de su carrera de desarrollo trabajando en algunos patrones de diseño y resolviendo los problemas que ocurren una y otra vez en sus proyectos. También puede ser consciente de cómo hace que el código sea reutilizable y aumenta la productividad de los desarrolladores. Los patrones de diseño son un vocabulario común para que los desarrolladores hablen sobre soluciones de software . Cuando usted (como desarrollador) dice » Deberíamos implementar esto usando el patrón singleton «, todos los demás desarrolladores entienden claramente cuál es el punto de referencia común. 
Suficiente conversación contigo (experimentado… nos pondremos en contacto contigo) ahora pasemos a los programadores principiantes o novatos… Olvídate de las cosas técnicas y tengamos una discusión amistosa primero… 

Ejemplo del mundo real

¿Te encanta la comida? (A todos les encanta eso) … ¿Cuál es tu restaurante favorito? ¿Dónde visitas más? ¿Te encanta la comida callejera o prefieres alguna aplicación en línea Zomato y Swiggy? Es posible que haya probado diferentes cocinas y que también haya experimentado con diferentes lugares. Si hay un restaurante favorito en su lista donde la mayor parte del tiempo le encanta comer su plato favorito, ¿cuál es la razón detrás de eso? Por supuesto, el chef experimentado de ese restaurante podría estar utilizando una técnica específica para preparar el plato. ¿Y si también quieres preparar la misma comida con la misma prueba en casa? ¿Que necesitas hacer ahora? Debe seguir el mismo enfoque o técnica utilizada por el chef experimentado. Es posible que hayan probado muchas recetas .y podrían haber cambiado su enfoque para preparar ese plato. Finalmente, en un momento se detuvieron cuando aprendieron una técnica particular para preparar ese plato específico y sabe bien. 

Bueno, si también desea preparar el mismo plato que sabe bien como en su restaurante favorito, entonces debe seguir el mismo enfoque y las técnicas que brindan los chefs experimentados o debe acercarse a su amigo que cocina bien y prepara los platos con alguna técnica específica. . 

Ya basta de hablar de comida, pasemos a los patrones de diseño . Fíjese en las palabras resaltadas arriba, probó muchas recetas , cambió su enfoque , chef experimentado y cocinó muy bien . Lo mismo ocurre con los patrones de diseño. Los patrones de diseño son como algunas de las mejores prácticas utilizadas por los chefs ( Gang of Four (GoF) ) para preparar un plato para que tenga el mejor sabor. 

  • Los patrones de diseño son algunas prácticas de diseño utilizadas por desarrolladores experimentados de software orientado a objetos (chef experimentado o amigos en nuestro contexto). Son soluciones generales a problemas enfrentados durante el desarrollo de software.
  • Son las soluciones obtenidas por prueba y error (probando muchas recetas) por numerosos desarrolladores de software durante un período considerable.

Los patrones de diseño no resuelven el problema por sí mismos, nos ayudan a resolver el problema.

Tengamos una discusión técnica sobre patrones de diseño. 

Gang of Four (GoF)) experimentó problemas con el tiempo que resolvieron. Notaron que algunas de estas soluciones se pueden categorizar y que algunos problemas siempre son muy frecuentes y comunes (tan comunes como la pobreza). Entonces, técnicamente, los patrones de diseño son solo plantillas que brindan un flujo, enlace y estructura adecuados a su código. Es una herramienta de comunicación o puede decir una solución general brindada por desarrolladores de software experimentados para resolver problemas comunes que enfrentan los desarrolladores durante la fase de desarrollo del software. 

Los investigadores y profesionales de la computación desarrollaron una variedad de conceptos organizacionales y metodologías para diseñar software orientado a objetos de calidad que sea conciso, correcto y reutilizable, que describe una solución a un problema de diseño de software «típico». Un patrón proporciona una plantilla general para una solución que se puede aplicar en muchas situaciones diferentes. Puede usar estas plantillas millones de veces para resolver algunos tipos específicos de problemas. 

¿Sabes que solo el 11% de los programadores usan diagramas de diseño más del 75% de las veces?

Ahora es posible que tenga una pregunta de por qué necesitamos encajar nuestros problemas en algunos patrones de diseño… ¿por qué no podemos usar nuestra técnica? ¿Cuál es el beneficio de usarlo? Seguro que vamos a hablar de esto… 

Propósito de los patrones de diseño

  • Estás administrando un restaurante. Dirigir un restaurante no significa solo preparar comida y servirla a los clientes. También debe cuidar la comida deliciosa, los platos limpios, los problemas comunes que enfrentan los meseros, el chef u otros empleados en su restaurante. Como propietario de un restaurante, también debe dar soluciones a esos problemas generales. 
    Como ingeniero de software, su propósito no debe ser solo escribir un montón de código, sino también reducir la complejidad y cuidar la reutilización del código. Se espera que escriba un código limpio, elegante, libre de errores y manejable para que otros desarrolladores puedan entenderlo y, más tarde, si requiere algún tipo de cambio, se puede hacer con un efecto mínimo en todo su proyecto y aquí el patrón de diseño juega un papel importante. rol crucial. 
     

El propósito de la ingeniería de software es controlar la complejidad, no crearla. 
-Pamela Zavé

  • Estás construyendo una casa tú mismo sin ningún plan. Tienes una idea aproximada de lo que quieres o necesitas para la casa y empiezas a construir la primera pared, luego la segunda pared y así sucesivamente. Más pronto descubre que esto no va a funcionar y puede ser más problemático si está construyendo la casa con varias personas. ¿Cómo sabrán qué hacer sin un plan? Lo mismo ocurre con el software. 
    En el desarrollo de software, puede crear una aplicación sin un diseño inicial. Especialmente si puede reutilizar un diseño existente. (por ejemplo, agregar una nueva página a un sitio web no requiere que rediseñe todo. Puede simplemente seguir cómo se crearon otras páginas y reutilizar el mismo patrón de construcción). Puede verificar la solución existente para el tipo de problema similar con el que está tratando y usar la técnica o usar algún código de allí para resolver sus propios problemas.
  • Supongamos que eres un estudiante o un aspirante a CAT. Para resolver algunas preguntas de aptitud o problemas matemáticos, es posible que esté utilizando algunas fórmulas o técnicas. Aplica esas fórmulas o técnicas para resolver algunos tipos de problemas similares. Sabes que acabas de rescatar algunas líneas o principios y tus esfuerzos se reducen. También ahorraste tu tiempo. En el desarrollo de software, los patrones de diseño juegan este papel crucial (técnica o fórmula matemática).
  • En el desarrollo de software, suponga que está escribiendo algún código, se da cuenta de que cometió un error. Corregir necesita cambios en 10 archivos más. Esto implica que su diseño, si lo hizo, no era bueno en primer lugar. ¿Qué te costó este error?….perdiste mucho tiempo, algunos recursos, esfuerzos y también afectó la productividad del otro desarrollador.

Es posible que tenga la pista de cuán importantes son los patrones de diseño en el desarrollo de software. Tomemos un ejemplo de que estás trabajando en un proyecto. Su proyecto tiene un sistema de notificación. Tienes 15 clases de código. 13 de estas clases generan notificaciones. Escribe código en cada uno de ellos para comunicarse con su clase de notificación. 

Después de un par de días, las cosas cambian y tienes 10 clases más, también agregas notificaciones a esas clases. Su mecanismo de notificación cambia, ingresa a las 10+13 clases y cambia el código. Ahora su código no tiene sentido para usted. Te das cuenta de que todas estas clases deben desvincularse del sistema de notificación. Haces una nueva clase y pones toda la lógica de notificación allí. Y luego se le ocurren abstracciones que permiten que absolutamente cualquier cosa notifique a su sistema con un efecto dominó mínimo y una reutilización máxima . 

¿Notaste que acabas de inventar el observador o patrón para todo tu código? Si conocía este patrón antes, no se ha enfrentado a todos esos problemas y tampoco ha perdido mucho tiempo. Como ingeniero de software, se espera que construya software que tenga sentido. Ahora podemos resumir la importancia de los patrones de diseño a partir de los siguientes puntos… 

  • Hace que el código sea reutilizable, libre de errores y limpio.
  • Acelerar el proceso de desarrollo.
  • Los cambios o modificaciones se vuelven más fáciles.
  • Reduzca los problemas comunes de los desarrolladores que enfrentan durante el proceso de desarrollo.
  • Mejorar la habilidad orientada a objetos.
  • Fácil de entender el flujo de código.
  • Menos código tan fácil de mantener.

Los patrones no brindan soluciones, inspiran soluciones.

Publicación traducida automáticamente

Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *