자바 단일 모드(굶 주 린 모드 와 게 으 른 모드)
굶 주 림
굶 주 린 사람 모델 에 대해 우 리 는 이렇게 이해 할 수 있다.이 사례 는 매우 배가 고 프 고 음식 을 급히 먹 어야 하기 때문에 클래스 를 불 러 올 때 바로 대상 을 만 들 수 있다.
게으름뱅이
게으름뱅이 모델 에 대해 우 리 는 이렇게 이해 할 수 있다.이 사례 는 매우 게 으 르 고 자신 이 필요 로 할 때 만 행동 할 수 있 으 며 일찍 준 비 를 할 줄 몰 랐 다.대상 이 필요 할 때 만 대상 이 있 는 지 여 부 를 판단 하고 없 으 면 바로 대상 을 만 든 다음 에 돌아 갑 니 다.대상 이 있 으 면 다시 만 들 지 않 고 바로 돌아 갑 니 다.
단일 디자인 모드 는 JDBC 링크 데이터베이스 에 자주 사 용 됩 니 다.
주의:
1.우리 가 자주 사용 하 는 것 은 첫 번 째 굶 주 린 사람 이다.왜냐하면:
(1)단 례 설계 모델 을 채택 한 이상 단 례 류 의 대상 을 사용 하기 위해 먼저 그 를 실례 화한 다.
(2)게으름뱅이 식 에 어느 정도 안전 위험 이 존재 하 므 로 동기 화 키 워드 를 더 해 synchronized 를 해 야 한다.그렇지 않 으 면 사례 는 말 할 것 도 없 지만 synchronized 를 더 하면 효율 이 약간 떨어진다.
2.첫 번 째 방법 에서 코드 private static final Single SINGLE=new Single();왜 final 이 있 지?
final 키워드 에 의 해 수 정 된 클래스 는 계승 할 수 없고 final 에 의 해 수 정 된 구성원 변 수 는 수정 할 수 없습니다.
여기 서 final 을 사용 하여'동일 대상'이라는 개념 을 강화 하고 중점 을 두 었 습 니 다.-이런 대상 만 있 고 수정 할 수 없습니다.
싱글 싱글 싱글 을 final 로 꾸 미 지 않 으 면 업무 가 복잡 하고 무심코 이 대상 을 수정 해 여러 가지 실 수 를 하 는 경우 가 있다.
첫 번 째(굶 주 린 식):
생각:
(1)다른 클래스 가 이러한 대상 을 만 들 지 못 하 게 합 니 다.곧 구조 함 수 를 개인 으로 설정 합 니 다!
(2)이 클래스 의 대상 을 사용자 정의 합 니 다.
(3)사용자 정의 대상 을 제공 합 니 다.즉,get 방법 을 정의 하고 값 을 이러한 대상 으로 되 돌려 줍 니 다.
분석:
첫 번 째 단계:단일 클래스 에서 구조 함 수 를 민영화 하고 get()함 수 를 이용 하여 이러한 대상 을 외부 에 제공 하기 때문에 다른 클래스 는 이러한 대상 을 구성 할 수 없습니다.
두 번 째 단계:그러나 다른 클래스 가 이 단일 클래스 의 방법 을 호출 하려 면 내 명,방법 명()으로 만 이 루어 져 야 합 니 다.이 방법 은 정적 static 이 어야 합 니 다.
세 번 째 단계:정적 방법 으로 정적 구성원 에 게 만 접근 할 수 있 습 니 다!그래서 SINGLE 를 정적 으로 설정 해 야 돼 요.
public class SingleDemo {
public static void main(String[] args) {
Single s1=Single.getSingle();
s1.setNumber(44);
Single s2=Single.getSingle();
s2.setNumber(55);
System.out.println("s1.number="+s1.number);
System.out.println("s2.number="+s2.number);
if(s1.equals(s2)){
System.out.println("s1 s2 :s1==s2");//if
}
}
}
class Single{
int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
private Single(){};//
private static final Single SINGLE=new Single();//
public static Single getSingle(){//
return SINGLE;
}
}
두 번 째(게으름뱅이 식):
package cn.com;
public class SingleDemo2 {
public static void main(String[] args) {
Single s1=Single.getSingle();
s1.setNumber(44);
Single s2=Single.getSingle();
s2.setNumber(55);
System.out.println("s1.number="+s1.number);
System.out.println("s2.number="+s2.number);
if(s1.equals(s2)){
System.out.println("s1 s2 :s1==s2");//if
}
}
}
class Single{
int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
private Single(){};
private static Single SINGLE=null;
public static synchronized Single getSingle(){// synchronized !!!
if(SINGLE==null){
SINGLE=new Single();
return SINGLE;
}
else{
return SINGLE;
}
}
}
이상 은 자바 단일 디자인 모델 에 대한 상세 한 설명 입 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 커 뮤 니 티 에 가서 토론 하 십시오.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.