단일 모드 의 5 가지 쓰기
3145 단어 디자인 모드
1. 굶 주 린 사람 (스 레 드 안전)
/**
*
*
* @author [email protected]
* @date 18-6-14 4:52
*/
public class Demo1 {
private static Demo1 demo1 = new Demo1();
private Demo1() {
}
public static Demo1 getInstance() {
return demo1;
}
public static void main(String[] args) {
System.out.println(Demo1.getInstance().hashCode());
System.out.println(Demo1.getInstance().hashCode());
}
}
2. 게으름뱅이 (라인 이 안전 하지 않 음)
/**
*
*
* @author [email protected]
* @date 18-6-14 4:53
*/
public class Demo2 {
private static Demo2 demo2 = null;
private Demo2() {
}
public static Demo2 getInstance() {
if (demo2 == null) {
demo2 = new Demo2();
}
return demo2;
}
public static void main(String[] args) {
System.out.println(Demo2.getInstance().hashCode());
System.out.println(Demo2.getInstance().hashCode());
}
}
3. 게으름뱅이 이중 잠 금 검증 (스 레 드 보안)
/**
* 2
*
* @author [email protected]
* @date 18-6-14 4:55
*/
public class Demo3 {
private static volatile Demo3 demo3 = null;
private Demo3() {
}
public static Demo3 getInstance() {
if (demo3 == null) {
synchronized (Demo3.class) {
if (demo3 == null) {
demo3 = new Demo3();
}
}
}
return demo3;
}
public static void main(String[] args) {
System.out.println(Demo3.getInstance().hashCode());
System.out.println(Demo3.getInstance().hashCode());
}
}
4. 정적 내부 클래스 (스 레 드 안전, 추천)
/**
* @author [email protected]
* @date 18-6-14 4:59
*/
public class Demo4 {
private Demo4() {
}
private static class Demo4Instance {
private static Demo4 demo4 = new Demo4();
}
public static Demo4 getInstance() {
return Demo4Instance.demo4;
}
public static void main(String[] args) {
}
}
정적 내부 클래스 와 외부 클래스 는 동급 이기 때문에 외부 클래스 를 불 러 올 때 내부 클래스 에 영향 을 주지 않 기 때문에 lazy loading 을 실현 합 니 다.또한 정적 변 수 를 이용 하여 Demo 4 가 Demo 4 인 스 턴 스 로 딩 할 때 만 한 번 초기 화 되 어 다 중 스 레 드 가 초기 화 되 지 않도록 하 는 방식 이기 때문에 스 레 드 가 안전 합 니 다.
5. 매 거 진 (라인 보안)
/**
* @author [email protected]
* @date 18-6-14 5:02
*/
public enum Demo5 {
getInstance;
private Demo5Instance demo5Instance;
public Demo5Instance getDemo5Instance(){
return demo5Instance;
}
Demo5() { //
demo5Instance = new Demo5Instance();
}
public static void main(String[] args) {
Demo5Instance demo5Instance = Demo5.getInstance.getDemo5Instance();
Demo5Instance demo5Instance2 = Demo5.getInstance.getDemo5Instance();
System.out.println(demo5Instance2.hashCode());
System.out.println(demo5Instance.hashCode());
}
}
class Demo5Instance {
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.