1. Descripción
1) Patrón de singleton: asegúrese de que solo haya una instancia de una clase, instanciéla usted mismo y proporcione esta instancia al sistema
2) Clasificación del patrón Singleton: Patrón Singleton (instantó un objeto a su propia referencia cuando la clase se carga), el patrón de singleton perezoso (el objeto se instanciará solo cuando se llama el método que obtiene la instancia, como GetInstance) (Java Singleton El rendimiento del modo es mejor que el modo singleton perezoso, el modo singleton perezoso generalmente se usa en C ++)
3) Elementos de patrón singleton:
a) Método de construcción privada
b) puntos de referencia estáticos privados a su propia instancia
c) Método estático público con su propia instancia como valor de retorno
2. Ejemplo
Modo Singleton de hambre:
La copia del código es la siguiente:
paquete com.wish.modedesign;
clase pública Hungrysingleton {
Instancia privada estática hungrysingleton = new Hungrysingleton ();
privado hungrysingleton () {
}
public static hungrysingleton getInstance () {
instancia de retorno;
}
}
Modo de singleton perezoso:
La copia del código es la siguiente:
paquete com.wish.modedesign;
Singleton de clase pública {
Singleton privado () {
}
Instancia de singleton estático privado;
Public static sincronizado singleton getInstance () {// Presta atención a la seguridad de los subprocesos cuando se pone múltiples.
if (instance == null) {
instancia = new Singleton ();
}
instancia de retorno;
}
}
Test Class Driver.java
La copia del código es la siguiente:
paquete com.wish.modedesign;
Conductor de clase pública {
public static void main (string [] args) {
Singleton s1 = singleton.getInstance ();
Singleton s2 = singleton.getInstance ();
System.out.println (S1 == S2);
}
}
3. Ventajas y escenarios aplicables
1) Ventajas del modo Singleton:
Solo hay un objeto en la memoria, guardando el espacio de memoria.
Evitar la creación frecuente y la destrucción de los objetos puede mejorar el rendimiento.
Evite múltiples ocupaciones de recursos compartidos.
Se puede acceder a nivel mundial.
2) Escenarios aplicables:
Objetos que necesitan ser instanciados con frecuencia y luego destruidos.
Los objetos que toman demasiado tiempo o demasiado recursos al crear objetos, pero a menudo se usan.
Objeto con forma de herramienta con estado.
Objetos que con frecuencia acceden a bases de datos o archivos.
4. cosas a tener en cuenta al usar
1) Al usar, no puede crear un singleton con modo de reflexión; de lo contrario, se instanciará un nuevo objeto.
2) Preste atención a los problemas de seguridad del hilo cuando se use el modo singleton perezoso
3) El hambriento patrón singleton y los métodos de construcción de patrones singletos perezosos son privados y, por lo tanto, no pueden heredarse.