Patrones de diseño | Serie 1 (Introducción)

 

Un patrón de diseño proporciona una solución reutilizable general para los problemas comunes que ocurren en el diseño de software. El patrón normalmente muestra relaciones e interacciones entre clases u objetos. La idea es acelerar el proceso de desarrollo proporcionando paradigmas de diseño/desarrollo probados y comprobados. Los patrones de diseño son estrategias independientes del lenguaje de programación para resolver un problema común. Eso significa que un patrón de diseño representa una idea, no una implementación particular. Mediante el uso de patrones de diseño, puede hacer que su código sea más flexible, reutilizable y mantenible.

No es obligatorio implementar siempre patrones de diseño en su proyecto. Los patrones de diseño no están destinados al desarrollo de proyectos. Los patrones de diseño están destinados a la resolución de problemas comunes. Siempre que haya una necesidad, debe implementar un patrón adecuado para evitar este tipo de problemas en el futuro. Para saber qué patrón usar, solo tiene que intentar comprender los patrones de diseño y sus propósitos. Solo haciendo eso, podrás elegir el correcto. 

Objetivo: 
comprender el propósito y el uso de cada patrón de diseño para elegir e implementar el patrón correcto según sea necesario. 

Ejemplo: 
en muchas situaciones del mundo real, queremos crear solo una instancia de una clase. Por ejemplo, solo puede haber un presidente activo de un país en un momento dado. Este patrón se llama patrón Singleton. Otros ejemplos de software podrían ser una única conexión de base de datos compartida por varios objetos, ya que crear una conexión de base de datos separada para cada objeto es costoso. De manera similar, puede haber un solo administrador de configuración o administrador de errores en una aplicación que maneje todos los problemas en lugar de crear varios administradores. 
  
Tipos de patrones de diseño
Existen principalmente tres tipos de patrones de diseño: 

  1. Creacional 
    Estos patrones de diseño tienen que ver con la instanciación de clases o la creación de objetos. Estos patrones se pueden clasificar en patrones de creación de clases y patrones de creación de objetos. Mientras que los patrones de creación de clases usan la herencia de manera efectiva en el proceso de creación de instancias, los patrones de creación de objetos usan la delegación de manera efectiva para realizar el trabajo. 

    Los patrones de diseño de creación son Factory Method, Abstract Factory, Builder, Singleton, Object Pool y Prototype. 

    Caso de uso del patrón de diseño creacional: 
    1) Suponga que un desarrollador desea crear una clase DBConnection simple para conectarse a una base de datos y desea acceder a la base de datos en varias ubicaciones desde el código; por lo general, lo que hará el desarrollador es crear una instancia de la clase DBConnection y utilícelo para realizar operaciones de base de datos cuando sea necesario. Esto da como resultado la creación de múltiples conexiones desde la base de datos, ya que cada instancia de la clase DBConnection tendrá una conexión separada a la base de datos. Para solucionarlo, creamos la clase DBConnection como una clase singleton, de modo que solo se crea una instancia de DBConnection y se establece una sola conexión. Debido a que podemos administrar DB Connection a través de una instancia, podemos controlar el balance de carga, las conexiones innecesarias, etc. 

    2) Suponga que desea crear varias instancias de un tipo similar y desea lograr un acoplamiento débil, entonces puede optar por el patrón de fábrica. Una clase que implementa un patrón de diseño de fábrica funciona como un puente entre varias clases. Considere un ejemplo del uso de múltiples servidores de bases de datos como SQL Server y Oracle. Si está desarrollando una aplicación utilizando la base de datos de SQL Server como back-end, pero en el futuro necesita cambiar la base de datos a Oracle, deberá modificar todo su código, de modo que los patrones de diseño de fábrica mantengan un acoplamiento flexible y una implementación fácil, deberíamos opte por el patrón de diseño de fábrica para lograr un acoplamiento flexible y la creación de un tipo de objeto similar.

  2. Estructural 
    Estos patrones de diseño tratan sobre la organización de diferentes clases y objetos para formar estructuras más grandes y proporcionar una nueva funcionalidad. 

    Los patrones de diseño estructural son Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data y Proxy. 

    Caso de uso del patrón de diseño estructural- 

    1) Cuando 2 interfaces no son compatibles entre sí y se quiere establecer una relación entre ellas a través de un adaptador se llama patrón de diseño de adaptador. El patrón de adaptador convierte la interfaz de una clase en otra interfaz o clase que el cliente espera, es decir, el adaptador permite que las clases trabajen juntas que de otro modo no podrían debido a la incompatibilidad. entonces, en este tipo de escenarios incompatibles, podemos optar por el patrón del adaptador.

  3. Comportamiento 
    Los patrones de comportamiento consisten en identificar patrones de comunicación comunes entre objetos y darse cuenta de estos patrones. 

    Los patrones de comportamiento son String de responsabilidad, Comando, Intérprete, Iterador, Mediador, Recuerdo, Objeto nulo, Observador, Estado, Estrategia, Método de plantilla, Visitante 

    Caso de uso de patrón de diseño de comportamiento- 

    1) El patrón de plantilla define el esqueleto de un algoritmo en una operación que transfiere algunos pasos a las subclases. El método de plantilla permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo. Por ejemplo, en su proyecto, desea que el comportamiento del módulo pueda extenderse, de modo que podamos hacer que el módulo se comporte de maneras nuevas y diferentes a medida que cambian los requisitos de la aplicación, o para satisfacer las necesidades de nuevas aplicaciones. Sin embargo, nadie puede realizar cambios en el código fuente, es decir, puede agregar pero no puede modificar la estructura en aquellos escenarios en los que un desarrollador puede abordar el patrón de diseño de la plantilla.

Referencias:  
https://sourcemaking.com/design_patterns  
https://sourcemaking.com/design_patterns/singleton 

Este artículo es una contribución de Abhijit Saha y Tanuja Praharaj . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *