단일 모델 의 몇 가지 실현 -
3252 단어 단일 모드
package com.doctor.java.design_pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* --《java - 》
*
* @author doctor
*
* @time 2015 4 24 11:11:03
*/
public class SingletonPattern {
/**
* @param args
*/
public static void main(String[] args) {
LazySingleton.getInstance();
LazySingleton.getInstance();
LazySingleton.getInstance();
//
EagerSingleton.getInstance();
EagerSingleton.getInstance();
//
DoubleCheckLazySingleton.getInstance();
DoubleCheckLazySingleton.getInstance();
DoubleCheckLazySingleton.getInstance();
//
Singleton.getInstance();
Singleton.getInstance();
//
EnumSingleton.instance.EnumSingletonOperation();
EnumSingleton.instance.EnumSingletonOperation();
}
/**
* ,
*/
public static class LazySingleton {
private static final Logger log = LoggerFactory.getLogger(LazySingleton.class);
// ,
private static LazySingleton singleton = null;
// ,
private LazySingleton() {
log.info(LazySingleton.class.getName() + " ");
}
/**
* , ,
*
* @return
*/
public static synchronized LazySingleton getInstance() {
if (singleton == null) {
singleton = new LazySingleton();
}
return singleton;
}
}
/**
* , ,
*/
public static class DoubleCheckLazySingleton {
private static final Logger log = LoggerFactory.getLogger(DoubleCheckLazySingleton.class);
// ,
private static DoubleCheckLazySingleton singleton = null;
// ,
private DoubleCheckLazySingleton() {
log.info(DoubleCheckLazySingleton.class.getName() + " ");
}
/**
* , ,
*
* @return
*/
public static DoubleCheckLazySingleton getInstance() {
if (singleton == null) {
synchronized (DoubleCheckLazySingleton.class) {
if (singleton == null) {
singleton = new DoubleCheckLazySingleton();
}
}
}
return singleton;
}
}
/**
*
*/
private static class EagerSingleton {
private static final Logger log = LoggerFactory.getLogger(EagerSingleton.class);
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {
log.info(EagerSingleton.class.getName() + " ");
}
public static EagerSingleton getInstance() {
return instance;
}
}
/**
* + = +
*/
public static class Singleton {
private static final Logger log = LoggerFactory.getLogger(Singleton.class);
private Singleton() {
log.info(Singleton.class.getName() + " ");
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
/**
* , , , ,
*/
private static class SingletonHolder {
// , JVM
private static Singleton instance = new Singleton();
}
}
/**
* , , jvm
*/
public static enum EnumSingleton {
// , EnumSingleton 。
instance;
/**
* ,
*/
public void EnumSingletonOperation() {
//
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 디자인 모델의 단례 모델소프트웨어 개발 과정에서 우리는 라인 탱크(threadpool), 캐시(cache), 대화상자, 선호 설정 등 하나만 필요로 하는 대상이 종종 있다.이러한 대상이 여러 개의 실례를 만들면 프로그램 행위 이상, 자원 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.