Uno de los patrones de diseño Java: Singleton

introducción

Los patrones de diseño se resumen por nuestros predecesores en el proceso de desarrollo real para desarrollar rutinas. A partir de esta serie de artículos comenzó a introducir 23 patrones de diseño de Java. Cada patrón de diseño descripción correspondiente se describe como un código auxiliar.

  • ¿Qué es un producto único
  • Singleton cómo escribir
  • resumen

En primer lugar, ¿cuál es el producto único

El patrón llamado Singleton es sólo para crear una instancia única de la clase. En muchos casos, toda la plataforma sólo es necesario tener un objeto global, esto nos ayudará a coordinar el comportamiento de la plataforma global. Por ejemplo, en el backend, la información de configuración almacenada en un servidor de archivos, los datos de configuración se lee por un objeto singleton unificado, y otros objetos en el proceso de re-adquisición de información de configuración de servicio a través del objeto singleton. Este enfoque simplifica la gestión de la configuración en un entorno complejo es propicio para configurar unificado combinación de datos;

En segundo lugar, la forma de escribir el patrón Singleton

(1) fórmula perezoso

public class Singleton {
     
    private Singleton() {}
    private static Singleton single = null;
    
    public static Singleton getInstance() {
    		//被动创建,需要时加载
           if (null == single) {  
                single = new Singleton();
             }  
            return single;
        }
}

(2) hambrientos fórmula:
el llamado hombre hambriento es el tipo que ser creado cuando la instancia de cargador de clases, si los consumidores necesidades actuales o no. Dado que el proceso está determinado por el cargador de clase de cargador de clases (ClassLoader)para ser ejecutado, el proceso de JVMsincronización para asegurar, por lo que está inherentemente seguro para subprocesos.

public class Singleton {

//类加载时就已创建实例
 private static final Singleton Singleton = new Singleton()//私有构造方法
 private Singleton (){}private static Singleton getInstance() {
  return Singleton;
 }
}

(3) Modo bien alimentados (modo vago) - vuelva a comprobar la cerradura DCL (Double Check Lock)

public class Singleton {

    private volatile static Singleton instance = null;
    //私有构造函数
    private Singleton(){}

    public static Singleton getInstance(){
    //1、检查实例是否存在
        if(instance == null){
        //同步块,线程安全的创建实例
			synchronized(Singleton.class){
    //2、再次检查实例是否存在,如果不存在才真的创建实例
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

En tercer lugar, el resumen

Hay varios modalidad solo modo de escritura, se puede seleccionar adecuadamente según la escena. Ejemplo resume las ventajas y desventajas de un solo modo.
Ventajas:
1, los únicos objetos en la memoria, se puede ahorrar espacio de memoria;
2, se puede hacer para evitar los objetos crear destruyendo frecuentes, para mejorar el rendimiento;
3, para evitar la ocupación de los recursos de diferentes objetos compartidos, la optimización del acceso a los datos;
4, para la totalidad plataforma proporciona un punto de acceso global.
Desventajas:
1, no se aplica al objeto para el que cambia constantemente;
2, un solo caso de abuso traerá algunas cuestiones negativas, con el fin de ahorrar recursos como la conexión de base de agrupación de objetos como un diseño de la clase Singleton, puede conducir a un objeto a través de un grupo de conexión compartida la aparición de múltiples conexiones piscina desbordante;
3, si se instancia un objeto durante mucho tiempo no se utiliza, el sistema va a pensar que el objeto es basura para recoger, lo que puede conducir a la pérdida de objetos de estado;

Publicado 88 artículos originales · ganado elogios 49 · Vistas de 100.000 +

Supongo que te gusta

Origin blog.csdn.net/Diamond_Tao/article/details/100618615
Recomendado
Clasificación