단일 모드장식 모드템 플 릿 모드
1. 단일 디자인 모델:
1. 문제 해결:
하나의 대상 의 유일 성 을 보증 하 다.
종류: 내부 클래스 로드 방식, 집합 로드 방식, 단일 모드 하위 클래스 확장 방식.
2. 응용 장면: 여러 프로그램 이 하나의 대상 이나 설정 파일 의 데 이 터 를 사용 해 야 하고 데이터 공유 와 교환 을 실현 하려 면 여러 데 이 터 를 한 대상 에 밀봉 해 야 합 니 다.그리고 여러 프로그램 이 같은 대상 으로 작 동 합 니 다.따라서 이 프로필 대상 의 유일 성 을 확보 해 야 합 니 다.
3. 대상 을 보증 하고 자 하 는 유일한 것:
1、 다른 프로그램 이 이런 대상 을 너무 많이 만 들 지 않도록 다른 대상 이 이런 대상 을 만 드 는 것 을 금지한다.
2、 다른 프로그램 이 이러한 대상 에 접근 할 수 있 도록 이 클래스 에서 대상 을 사용자 정의 할 수 밖 에 없습니다.
3、 다른 프로그램 이 사용자 정의 대상 에 접근 할 수 있 도록 대외 적 으로 접근 방식 을 제공 할 수 있다.
4, 실현:
1) 민영화 구조 함 수 는 외부 에서 이 를 통 해 대상 을 만 들 수 없 게 한다.
2) 클래스 에서 대상 을 사용자 정의 하고 민영화 합 니 다.
3) 이 대상 을 얻 을 수 있 는 공공 접근 방식 을 제공 합 니 다.
굶 주 린 사람:
코드:
(굶 주 린 한식 실현 방식):
구체 적 인 사용 방식:
class Single{
private Single(){}
private static Single s = new Single();
public static Single getInstance(){
return s;
}
}
단 하나의 대상 의 원 리 는:
메모리 로드 원리:
클래스 를 불 러 올 때 정적 변수 s 와 정적 방법 getInstance 를 방법 구역 에 추가 하 는 동시에 메모리 에 대상 을 만 듭 니 다. 정적 변수 s 는 메모리 에 있 는 대상 을 가리 키 고 있 습 니 다. 우리 가 호출 할 때 주 함 수 는 스 택 메모리 에 값 ss 가 있 습 니 다. 이것 은 정적 변수 s 의 값 을 ss 에 부 여 했 을 뿐 ss 가 대상 을 가리 키 는 것 입 니 다.따라서 정적 방법 을 다시 한 번 호출 하 는 것 이다. 그 결 과 는 s 의 값 을 다른 변수 에 부 여 했 을 뿐이다. 그 변 수 는 여전히 원래 의 대상 을 가리 키 기 때문에 이것 이 하나의 예 이 고 대상 의 유일한 것 이다.
게으름뱅이 식:
구현 방식:
구체 적 인 호출 클래스:
public class SingleDemo {
public static void main(String[] args) {
Single s = Single.getInstance();
}
}
5. 구별 과 선택:
굶 주 린 사람 은 메모리 에 들 어가 면 좋 은 대상 을 만 들 수 있다.한편, 게으름뱅이 식 은 메모리 에 들 어가 면 대상 이 만들어 지지 않 고 getInstance () 방법 을 호출 했 을 때 만 대상 을 만 들 수 있 기 때문에 굶 주 린 사람 에 비해 로드 지연 입 니 다.
굶 주 린 사람과 게 으 른 사람의 선택:
1. 우리 가 이 두 가지 사례 디자인 모델 을 사용 할 때 사실은 이 유일한 대상 을 사용 하고 그 중의 속성 과 방법 을 사용 해 야 한다. 우리 의 수요 에 따라 보통 굶 주 린 사람 식 을 사용한다.그리고 굶 주 린 한식 온라인 코스 는 안전 하 다.프로 그래 밍 은 간단 하 다.
2. 게으름뱅이 식 은 스 레 드 안전 문제 가 있 습 니 다. 예 를 들 어 두 스 레 드 가 if 구문 에 멈 춘 후에 대상 을 만 들 기 전에.그 다음 에 스 레 드 A 는 s2 = new Single 2 () 문 구 를 실행 하고 스 레 드 B 도 이 문 구 를 실행 하면 메모리 에 두 개의 대상 이 있 습 니 다. 그러면 대상 이 유일 하지 않 습 니 다.
1) 자주 사용 되 고 안전 하 며 단일 모드 를 정의 할 때 보통 굶 주 린 사람 식 이다.2) 그러나 게으름뱅이 시험 은 비교적 많다.
6. 라인 안전 문제 해결:
class Single2{
private Single2(){}
private static Single2 s2 = null;
public static Single2 getInstance2(){
if(s2==null)
s2=new Single2();
return s2;
}
}
2. 장식 디자인 모델:
1. 장식 디자인 모델: 기 존의 대상 에 비해 기능 을 강화 할 때 유형 을 정의 하고 기 존의 대상 을 전송 하 며 기 존의 기능 을 바탕 으로 강화 기능 을 제공 할 수 있다.그러면 스스로 정 한 이 종 류 는 장식 류 가 된다.
2. 장식 디자인 모델 과 계승 의 차이 점:
상속 을 먼저 말 하 다.
계승 은 바로 하위 클래스 B 가 부모 클래스 A 와 그 기능 을 계승 하 는 것 이다. 만약 에 우리 가 기 존의 부모 클래스 A 기능 을 바 꾸 려 면 하위 클래스 B 가 부모 클래스 를 덮어 쓰 는 방법 으로 우리 의 방법 기능 을 기록 해 야 한다.그 후에 만약 에 이 하위 클래스 B 에서 기능 을 강화 하려 면 방법 은 이 하위 클래스 B 에서 이 B 의 하위 클래스 C 를 구축 하고 하위 클래스 C 에 B 의 기능 을 복사 한 다음 에 개선 기능 을 기록 하 는 것 이다.그러나 A 의 자 류 가 계속 늘 어 나 면 시스템 이 비대 해 지 는 것 이 분명 하 다.
한편, 장식 모델 은 대상 을 들 여 보 내 고 대상 의 기 존 기능 을 바탕 으로 강화 하 는 것 이다. 갖 춘 기능 은 기 존의 기능 과 같 고 더욱 강 한 기능 을 제공 할 뿐이다.그래서 장식 모델 은 계승 보다 유연 하고 체계 가 비대 해 지 는 것 을 피 할 수 있 으 며 유형 과 유형 간 의 관 계 를 낮 출 수 있 으 며 장식 류 와 피 장식 류 는 보통 한 체계 에 있다.장식 류 를 정의 하려 면 주의해 야 한다. 기 존의 체계 대상 에 들 어가 야 하고 기 존의 체계 가 나중에 새로운 하위 클래스 가 있 을 수 있 기 때문에 대상 에 들 어 갈 때 다 형 을 사용 하여 확장 성 을 높 여야 한다.
장식 디자인 모드 코드:
class singledemo{
public static void main(String[] args){
// single , getInstance , , , static 。
single ss = single.getInstance();
single ss2 = single.getInstance();
// , 。
// single ss = single.s;
// single ss2 = single.s;
}
}
자세 한 정보:
1、 프로그램 을 개발 할 때 기 존 기능 을 강화 하거나 기 존 기능 을 바 꾸 면 원 코드 를 바 꾸 지 않 는 것 이 좋다.
2、 기 존 대상 을 전송 하 는 것 입 니 다.
3、 기 존의 프로그램 기능 을 바탕 으로 이 위 에서 새로운 기능 을 개선 하거나 추가 하 는 것 입 니 다.
3. 템 플 릿 디자인 모델:
1, 코드 인 스 턴 스:
// :
public static synchronized Single2 getInstance2(){
if(s2==null)
s2=new Single2();
}
// , , , 。
// :
public static Single2 getInstance2(){
if(s2==null){
synchronized(Single.class){
if(s==null)
s2=new Single2();
}
}
}
2. 템 플 릿 디자인 모델, 기능 을 정의 할 때 기능 의 일 부 는 확실 하지만 일 부 는 확실 하지 않 고 확실한 부분 은 불확실 한 부분 을 사용 하면 이 불확실 한 부분 을 드 러 내 고 이런 유형의 하위 클래스 가 완성 된다.
주의: 불확실 한 부분 은 꼭 추상 적 인 것 이 아 닙 니 다. 기 존 유형 에 기본 적 인 방법 이 있 을 수 있 기 때문에 우리 가 사용 할 때 그것 을 덮어 쓰 면 됩 니 다. 우리 가 필요 로 하 는 내용 을 쓰 면 됩 니 다.그래서 불확실 한 부분 은 추상 적일 수도 있 고 추상 적일 수도 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.