Skip to content

Instantly share code, notes, and snippets.

@LaraMateo
Forked from AlbertoP18/Patron de Singleton.md
Last active June 15, 2023 08:14
Show Gist options
  • Save LaraMateo/dda3e509a90ded349a58f5953fc21384 to your computer and use it in GitHub Desktop.
Save LaraMateo/dda3e509a90ded349a58f5953fc21384 to your computer and use it in GitHub Desktop.

¿Qué es el patrón Singleton?

En este artículo, exploraremos el patrón de diseño Singleton, que se utiliza en el desarrollo de software para garantizar que solo exista una única instancia de una clase en todo el programa. Discutiremos su propósito, cómo implementarlo y analizaremos sus ventajas y desventajas.

¿Qué es un patrón de diseño?

Un patrón de diseño es una solución para resolver un problema recurrente en el diseño de software. Al igual que seguir una receta para hacer galletas, los patrones de diseño nos brindan un enfoque estructurado y probado para abordar situaciones comunes en el desarrollo de software.

Los patrones de diseño ayudan a los programadores a escribir programas de una manera más clara, mantenible y eficiente. Son como herramientas en una caja de herramientas que nos permiten abordar problemas específicos de manera efectiva.

Existen tres categorías principales de patrones de diseño:

  • Patrones creacionales: se centran en la creación de objetos.
  • Patrones estructurales: se ocupan de la composición y estructura de las clases y objetos.
  • Patrones de comportamiento: se enfocan en la interacción entre objetos y la distribución de responsabilidades.

El patrón Singleton

El patrón Singleton es un patrón creacional que garantiza que solo exista una única instancia de una clase en todo el programa. Esto significa que si se crea una instancia de la clase en un lugar del programa, no se puede crear otra instancia en otro lugar.

Propósito del patrón Singleton

El propósito del patrón Singleton es asegurar que una clase tenga una sola instancia y proporcionar un punto de acceso global a esa instancia. Esto no implica la creación de objetos en sí, sino restringir la creación de una instancia, lo cual reduce el consumo de recursos y mejora el rendimiento del programa.

Casos de uso del patrón Singleton

El patrón Singleton es útil en los siguientes casos:

  • Limitar el acceso a un recurso compartido, como una base de datos o un objeto de configuración.
  • Hacer que ciertos valores de configuración estén disponibles globalmente en todo el programa.
  • Controlar el acceso concurrente a un recurso compartido.

Implementación del patrón Singleton

Aquí hay un ejemplo de implementación del patrón Singleton en Java:

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // Constructor privado para evitar la creación de instancias externas
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

En esta implementación, la clase Singleton tiene un atributo estático llamado instance que almacena la única instancia de la clase. El constructor es privado para evitar la creación de instancias externas, y el método getInstance() devuelve la instancia existente o crea una nueva si aún no se ha creado.

Ventajas y desventajas del patrón Singleton

Ventajas:

  • Garantiza que solo exista una instancia de la clase en todo el programa.
  • Proporciona un punto centralizado de acceso a la instancia de la clase.
  • Mejora el rendimiento al evitar la creación de múltiples instancias de la clase.

Desventajas:

  • Puede dificultar la prueba unitaria debido a su dependencia global.
  • Puede aumentar la complejidad del código si se abusa de su uso.
  • Puede dificultar la extensibilidad de la aplicación si se desea cambiar la forma en que se crea la instancia del Singleton.

En resumen, el patrón Singleton es una herramienta útil en el desarrollo de software para garantizar que solo exista una instancia de una clase en todo el programa. Su implementación debe realizarse con cuidado, teniendo en cuenta las ventajas y desventajas mencionadas anteriormente.

¡Espero que este artículo te haya brindado una comprensión clara del patrón Singleton y cómo utilizarlo en tus proyectos de software!

Articulo Elaborado Por:

Desarrollador de software en

Linkedin logo

BlogIAS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment