단일 모드장식 모드템 플 릿 모드

디자인 모델: 어떤 문 제 를 해결 하 는 효과 적 인 해결 사상.
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. 템 플 릿 디자인 모델, 기능 을 정의 할 때 기능 의 일 부 는 확실 하지만 일 부 는 확실 하지 않 고 확실한 부분 은 불확실 한 부분 을 사용 하면 이 불확실 한 부분 을 드 러 내 고 이런 유형의 하위 클래스 가 완성 된다.
주의: 불확실 한 부분 은 꼭 추상 적 인 것 이 아 닙 니 다. 기 존 유형 에 기본 적 인 방법 이 있 을 수 있 기 때문에 우리 가 사용 할 때 그것 을 덮어 쓰 면 됩 니 다. 우리 가 필요 로 하 는 내용 을 쓰 면 됩 니 다.그래서 불확실 한 부분 은 추상 적일 수도 있 고 추상 적일 수도 있다.

좋은 웹페이지 즐겨찾기