¿Cómo escribir un patrón singleton simple?
La idea básica de implementación:
La implementación singleton pasa principalmente por los dos pasos siguientes:
1. Definir el método constructor de la clase como. privado, por lo que otro El código local no puede crear una instancia del objeto de la clase llamando al método constructor de la clase, y solo puede obtener la única instancia de la clase a través del método estático proporcionado por la clase;
2. Proporcione un método estático dentro de la clase. Cuando llamamos a este método, si la referencia mantenida por la clase no está vacía, se devolverá esta referencia. Si la referencia mantenida por la clase está vacía, se generará una instancia de la clase. creado y la referencia de la instancia se asignará a la referencia que tiene la clase.
En segundo lugar, la demostración es la siguiente:
1. Implementación de enumeración única:
2. Los subprocesos diferidos no son seguros:
3. Seguridad del hilo perezoso:
4. Inanición:
5. Bloqueo de doble verificación:
6. Clase interna estática:
Información de la extensión:
1. Introducción al patrón singleton:
El patrón singleton es uno de los patrones de diseño más simples. El propósito de este patrón es hacer que un objeto de una clase sea la única instancia en el sistema. Para lograr esto, el cliente debe comenzar con una instanciación. Por lo tanto, es necesario utilizar un mecanismo para "bloquear" todo acceso al objeto a generar, que permita generar solo una instancia única de la clase de objeto. Utilice métodos de fábrica para limitar el proceso de creación de instancias. El método debe ser un método estático (método de clase), ya que no tiene sentido permitir que una instancia de una clase genere otra instancia única.
2. Perezoso y hambriento:
1. Método perezoso: se refiere a construir una instancia singleton global cuando se usa por primera vez.
2. Método de inanición: construye una instancia singleton global al cargar una clase.
Tres puntos clave del patrón singleton:
1. Una clase solo puede tener una instancia.
2. Debe crear esta instancia por sí mismo.
3. Debe proporcionar esta instancia a todo el sistema por sí mismo.
4. Ventajas y desventajas:
1. Ventajas:
1) Control de instancia: el modo Singleton puede evitar que otros objetos creen instancias de sus propias copias de objetos singleton. ., asegurando así que todos los objetos tengan acceso a una instancia única.
② Flexibilidad: debido a que la clase controla el proceso de creación de instancias, la clase puede cambiar de manera flexible el proceso de creación de instancias.
2. Desventajas:
① Gastos generales: aunque el número es pequeño, si el objeto al que hace referencia cada solicitud debe verificar si existe una instancia de la clase, se generará una cierta cantidad de gastos generales. todavía es necesario. Esto se puede resolver mediante el uso de inicialización estática.
2) Posible confusión en el desarrollo: cuando se utilizan objetos singleton (especialmente objetos singleton definidos en bibliotecas de clases), los desarrolladores deben recordar que no pueden usar la nueva palabra clave para crear una instancia del objeto. Debido a que es posible que no se pueda acceder al código fuente de la biblioteca de clases, es posible que los desarrolladores de aplicaciones inesperadamente no puedan crear instancias de dichos objetos directamente.
3) Supervivencia del objeto: Esto no resuelve el problema de eliminar un solo objeto. En los lenguajes que proporcionan administración de memoria (como los basados en .NET Framework), solo una clase singleton puede hacer que una instancia sea desasignada porque contiene una referencia privada a la instancia. En algunos lenguajes (como C), otras clases pueden eliminar instancias de objetos, pero esto hace que se suspenda la referencia en la clase singleton.
Referencia: modo de columna única de la Enciclopedia Baidu