patrón de diseño Singleton de seis principios

  Introducción: El aprendizaje continuo es el destino del programador

A, Singleton

  

  El patrón llamado diseño singleton es tomar ciertas métodos aseguran que todo el sistema de software, la presencia de una instancia de objeto de solamente una clase , y la clase es único método disponible (método estático) para obtener una instancia de objeto. Tal como SessionFactory de Hibernate, que actúa como una fuente de almacenamiento de datos proxy, y es responsable de la creación de objetos de sesión. SessionFactory no ligera

  Singleton después de ocho maneras:

  

En segundo lugar, el tipo de hombre hambriento (constantes estáticas)

público  clase Singleton01 {
     // instancia creada internamente de la clase de objeto de la presente 
    privada final estática ejemplo Singleton01 = nuevo nuevo Singleton01 ();
     // constructor privatización, no fuera nuevo nuevo 
   privada Singleton01 () {}
    // proporciona un método public static, devuelve una instancia de un objeto 
    privada  estática Singleton01 la getInstance () {
        retorno ejemplo; 
    } 

    pública  estática  void main (String [] args) {
         // prueba 
        Singleton01 instancia1 = Singleton01.getInstance (); 
        Singleton01 instance2 = OUT Singleton01.getInstance ();
        Sistema. .println (instance1 == instance2); 
        Sistema. fuera .println (instance1.hashCode ()); 
        Sistema. fuera .println (instance1.hashCode ()); 
    } 
}
Hungry tipo hombre (constantes estáticas)

análisis:

  (1) ventajas: un enfoque de este tipo es relativamente simple, es decir, cuando la carga se ha completado la clase se crea una instancia. Para evitar los problemas de sincronización de hilo.

  (2) Desventajas: carga de clases cuando se ha completado la instanciación, no alcanzan el efecto de Lazy Loading. Si usted nunca ha utilizado este ejemplo de principio a fin, que dará lugar a una pérdida de memoria

En tercer lugar, los hambrientos de fórmula (bloque de código estático)

público  de clase {Singleton02
     // crear una instancia de objeto de esta clase interna 
    privada   estática ejemplo Singleton02;
     // constructor de la privatización, no fuera nueva nueva 
    privado Singleton02 () {}
     // bloque de código estático, cree únicos 
    estática { 
        instancia = new new Singleton02 (); 
    } 
    // proporciona un método public static, devuelve una instancia de un objeto 
    público  estática Singleton02 la getInstance () {
         retorno ejemplo; 
    } 
    pública  estática  void main (String [] args) {
         // prueba 
        instancia Singleton02 =Singleton02.getInstance (); 
        Singleton02 instance2 = Singleton02.getInstance (); 
        Sistema. fuera .println (ejemplo == instance2); // cierto 
        sistema. fuera .println ( " instance.hashCode = " + instance.hashCode ()); 
        Sistema. fuera .println ( " instance2.hashCode = " + instance2.hashCode ()); 
    } 
}
fórmula Starving (bloque de código estático)

análisis:

  (1) De esta manera y similar a la manera descrita anteriormente, excepto que el proceso de la clase se crea una instancia en el bloque de código estático, el código se ejecuta en el código estático cuando está cargado, inicializar la instancia de la clase

  (2) Conclusión: Los métodos únicos disponibles, pero puede resultar en la memoria desperdiciada

En cuarto lugar, el hombre perezoso (seguro para hilos)

Supongo que te gusta

Origin www.cnblogs.com/rmxd/p/12635430.html
Recomendado
Clasificación