Definición básica
El patrón singleton es garantizar que solo haya una instancia de una clase determinada y proporcionar un punto de acceso global. El patrón singleton tiene las siguientes características:
- Solo tiene una instancia.
- Debe ser instanciado por sí solo.
- Debe proporcionar puntos de acceso a todo el sistema por sí mismo.
Implementación de código
Hambriento
Inicializar directamente variables estáticas. Esto garantiza la seguridad del hilo.
public class Singleton { private static Singleton singleton = new Singleton (); private Singleton () { } public static Singleton getInstance () { return singleton; } }
Perezoso
Carga bajo demanda Manejar con sincronizado. En otras palabras, convierta el método getInstance () en un método sincrónico
clase pública LazySingleton { LazySingleton volátil estático privado lazySingleton; privado LazySingleton () { } público estático LazySingleton getInstance () { if (lazySingleton == null ) { sincronizado (LazySingleton. class ) { lazySingleton = new LazySingleton (); } } return lazySingleton; } }
Ventaja
Recursos del sistema guardados. Debido a que solo hay un objeto de instancia en el sistema, para algunos sistemas que necesitan crear y destruir objetos con frecuencia, el modo singleton sin duda ahorra recursos del sistema y mejora el rendimiento del sistema.
Debido a que la clase singleton encapsula su única instancia, puede controlar estrictamente cómo y cuándo los clientes acceden a ella.
Desventajas
Debido a que no hay una capa de abstracción en el patrón singleton, es muy difícil expandir la clase singleton.
Código fuente JDK
Perezoso
java.lang.Runtim
Hambriento
java.lang.System