Modo de diseño - Singleton patrón de JAVA implementado

patrón Singleton es en realidad un modelo de desarrollo para el entorno empresarial subyacente no está en uso para muchos. Aquí, por el momento para obtener almacén de información para tomar un ejemplo de cuando se inició el proyecto.

En primer lugar, el modo de hambre, cuando el proyecto será un comienzo del objeto requerido para crear instancias de ella. Aunque, es posible que no necesariamente ocupan memoria se utilizará, pero de hecho la posibilidad de los casos no se utilizará para escribir un mínimo, pero no descartar algunas clases de negocios pueden cambiar debido a la migración de las empresas a ser destruido, por lo parece que hay algo de verdad.

Singleton tipo de hambre es thread-safe, porque en un multi-hilo antes de iniciar este objeto ha existido
paquete Singleton;

/ **

  • Singleton, fórmula de hambre
  • @author [email protected]
  • * /
    Public class {WmsSingleton

    // crear aquí sólo una vez, son seguros para subprocesos
    estática privada WmsSingleton singleton = new WmsSingleton ( );

    WmsSingleton privada () {}

    public static WmsSingleton getInstance () {

    System.out.println ( "objeto antes de adquirir información del objeto:" + Singleton);
    retorno Singleton;
    }
    }

Perezoso general no necesariamente seguro para subprocesos, llamado hilo de seguridad, términos simples, si quieren tener que modificar la acción de la clase estática constante, que puede estar relacionado con un no seguro para subprocesos

Singleton empaquetar;

/ **

  • Singleton, fórmula perezoso
  • @author [email protected]
  • * /
    Public class {WmsLazySingleton

    private static Singleton WmsLazySingleton;

    WmsLazySingleton privada () {}

    public static WmsLazySingleton getInstance () {

     if (singleton == null) {
         System.out.println("获取对象前对象信息:"+singleton);         
         singleton = new WmsLazySingleton();
         System.out.println("获取对象后对象信息:"+singleton);
     }
     return singleton;

    }
    }

Desde fórmula general perezoso puede estar relacionado con el hilo cuestiones de seguridad, considerar el método apropiado para el bloque de añadir alrededor de bloqueo de sincronización, para resolver este problema. Aquí cerraduras sincronizados objetos no debe ser nulo

No se puede imaginar para bloquear un vacío, debe haber una entidad que puede jugar un papel bloqueo
paquete Singleton;

/ **

  • Singleton, alimentados con fórmula + bloqueo para garantizar la seguridad hilo sincronizado
  • @author [email protected]
  • * /
    Public class {WmsLazySyncSingleton

    estática privada WmsLazySyncSingleton lazySyncSingleton = null;

    Bloqueo de objetos estáticos privada = new Object ();

    WmsLazySyncSingleton privada () {}

    public static WmsLazySyncSingleton getInstance () {

    //加同步锁
    synchronized(lock) {
    
        if (lazySyncSingleton == null) {
    
            lazySyncSingleton =  new WmsLazySyncSingleton();
        }
    }
    return lazySyncSingleton;

    }

}

clases internas estáticas para poner en práctica el camino del hombre perezoso. Esto se basa en el tiempo de JAVA para cargar las clases internas estáticas para aplicar el
paquete de Singleton;

/ **

  • Estático clases interior manera
  • @author [email protected]
  • * /
    Public class {WmsStaticClassSingleton

    // clase interna estática objeto se inicializa
    clase estática privada StaticClassSingleton {

     private static WmsStaticClassSingleton staticClassSingleton = new WmsStaticClassSingleton();

    }

    WmsStaticClassSingleton privada () {}

    public static WmsStaticClassSingleton getInstance () {
    volver StaticClassSingleton.staticClassSingleton;
    }
    }

Supongo que te gusta

Origin blog.51cto.com/4890631/2485497
Recomendado
Clasificación