2020-03-04
묘사 하 다.
어제 의 프로젝트 를 완 성 했 으 니, 시간 이 있 으 면 업그레이드 하 세 요.
디자인 모델 의 단일 예 모델
기술 블 로그: null
수필
단일 모드
굶 주 린 사람 식
방식 1: 정적 속성 사용 가능
public class Singleton {
private final static Singleton INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
}
방식 2: 정적 코드 블록 사용 가능
public class Singleton {
private static Singleton instance;
static {
instance = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
게으름뱅이 식
방식 1: 스 레 드 가 안전 하지 않 습 니 다. 사용 할 수 없습니다.
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
방식 2: (스 레 드 안전, 동기 화 방법) 효율 이 안 되 고 추천 하지 않 습 니 다.
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
방식 3: 스 레 드 가 안전 하지 않 습 니 다. 사용 할 수 없습니다.
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
singleton = new Singleton();
}
}
return singleton;
}
}
이중 검사
스 레 드 안전, 효율 높 은 추천 사용
public class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
정적 내부 클래스
클래스 를 불 러 올 때 내부 클래스 가 불 러 오지 않 기 때문에 사용 할 때 불 러 옵 니 다.
자바 가상 머 신 은 클래스 로드 가 스 레 드 안전 한 추천 사용 임 을 보증 합 니 다.
public class Singleton {
private Singleton() {}
private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonInstance.INSTANCE;
}
}
매 거
JDK 1.5 에 추 가 된 매 거 진 을 통 해 단일 모드 를 실현 합 니 다.다 중 스 레 드 동기 화 문 제 를 피 할 수 있 을 뿐만 아니 라 반 직렬 화 를 방지 하여 새로운 대상 을 다시 만 드 는 것 도 방지 할 수 있다.JDK 1.5 에 매 거 되 어 추 가 된 것 같 습 니 다.
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.