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 ()); } }
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 ()); } }
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