Skip to content

Omisión de Patrones de Diseño - Singleton #2

@cjmunozy

Description

@cjmunozy

Ya que en el proyecto se trabaja con una base de datos de MySQL es necesario crear previamente una conexión para consultar y editar la información necesaria. Sin embargo, en el estado actual del código esto se hace una y otra vez en diferentes métodos. Por ejemplo, dentro de la clase Customer tenemos el método createCustomer() donde primero se crea la conexión y luego se realiza la creación de un nuevo Customer. Sin embargo, en otro método también se hace lo mismo, crear una conexión a la base de datos antes de realizar la operación específica del método llamado fetch().
Y así mismo, en otras clases, cada vez que se realizará una operación sobre la base de datos, se vuelve a crear una conexión una y otra vez. Es verdad que para una base de datos pequeña no se percibe el consumo innecesario de recursos que se realiza con cada conexión y desconexión. Pero, si la base de datos crece hasta tener una gran cantidad de registros entonces se haría más notorio el consumo de recursos. Además, el código que se encarga de crear la conexión y establecerla se repite una y otra vez a lo largo de distintas clases lo cual es una mala práctica de programación. El estado actual de unas cuantas clases se puede ver en el siguiente diagrama UML:
image

Ahora bien, una solución para evitar crear una conexión nueva cada vez que se llame a un método es la de tener una única conexión que siempre esté disponible para su uso sin importar quién ejecute la llamada. Esto se puede realizar usando el patrón de diseño creacional Singleton. Al usar este patrón solo se crea una única instancia y cada vez que se requiera usarla, en vez de crearla nuevamente el programa sigue trabajando con la misma instancia que ya existe. Aplicándolo a este problema podemos ver como su uso evitaría crear una y otra vez objetos de tipo Conexión que consumirán recursos del sistema y permitirá que los parámetros usados para conectarse permanezcan aislados del resto del programa, que realmente no necesita saber cómo se realiza la conexión sino simplemente conectarse a la base de datos para consultarla o editarla. Una posible implementación se puede ver en el siguiente diagrama UML:
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions