자바 노트 - 디자인 모델 의 모델 링 방법 모델

3772 단어 디자인 모드
현실 생활 에서 많은 일 들 이 몇 가지 실현 절 차 를 포함한다. 예 를 들 어 밥 을 사 는 것 이다. 무엇 을 먹 든 보통 주문, 음식 먹 기, 계산 등 몇 가지 절 차 를 포함한다. 보통 상황 에서 이 몇 가지 절차 의 순 서 는 주문 -- > 음식 먹 기 -- > 계산 이다.이 세 단계 에서 주문 과 계산 은 대동소이 하 다. 가장 큰 차 이 는 두 번 째 단계 인 무엇 을 먹 느 냐 에 있다.닭 장조림 을 먹 는 것 과 만 한 전석 을 먹 는 느낌 은 다르다.
소프트웨어 개발 에서 도 비슷 한 상황 이 발생 할 수 있다. 어떤 방법의 실현 은 여러 가지 절차 (예 를 들 어 '한 턱 내기') 가 필요 하 다. 그 중에서 어떤 절 차 는 고정 적 인 것 (예 를 들 어 '주문' 과 '계산') 이 고 어떤 절 차 는 고정 적 이지 않 으 며 가 변성 (예 를 들 어 '음식 먹 기') 이 존재 한다.코드 의 재 활용 성과 시스템 의 유연성 을 향상 시 키 기 위해 템 플 릿 방법 모델 이 라 고 불 리 는 디자인 모델 로 이런 상황 을 디자인 할 수 있다. 템 플 릿 방법 모델 에서 기능 을 실현 하 는 모든 절차 에 대응 하 는 방법 을 기본 적 인 방법 (예 를 들 어 '주문', '음식 먹 기' 와 '계산') 이 라 고 부른다.이러한 기본 적 인 방법 을 호출 하여 기본 적 인 방법의 실행 순 서 를 동시에 정의 하 는 방법 을 템 플 릿 방법 (예 를 들 어 '한 턱 내기') 이 라 고 한다.
템 플 릿 방법 모델 에서 같은 코드 를 부모 클래스 에 넣 을 수 있다. 예 를 들 어 템 플 릿 방법 인 '한 턱 내기' 와 기본 적 인 방법 인 '주문 하기' 와 '계산 하기' 의 실현 을 부모 클래스 에 두 고 기본 적 인 방법 인 '음식 먹 기' 에 대해 아버지 클래스 에서 하나의 성명 만 하고 이 를 서로 다른 하위 클래스 에 두 고 한 가지 유형 에서 '노 란 닭 찜' 의 실현 을 제공 할 수 있다.또 다른 자 류 는 '만 한 전석 먹 기' 의 실현 을 제공한다.템 플 릿 방법 모델 을 사용 함으로써 한편 으로 는 코드 의 재 활용 성 을 향상 시 켰 고 다른 한편 으로 는 대상 을 대상 으로 하 는 다 형 성 을 이용 하여 운영 할 때 구체 적 인 자 류 를 선택 하여 완전한 '초대' 방법 을 실현 하여 시스템 의 유연성 과 확장 성 을 높 일 수 있다.
       모드 방법 모드          정의: 하나의 모델 방법 은 추상 적 인 조작 으로 알고리즘 을 정의 하고 하위 클래스 는 이러한 조작 을 다시 정의 하여 구체 적 인 행 위 를 제공 합 니 다.
        의도: 한 작업 에서 알고리즘 프레임 워 크 를 정의 하고 일부 절 차 를 하위 클래스 로 미 루 었 습 니 다.모드 방법 모드 는 하위 클래스 가 알고리즘 구 조 를 바 꾸 지 않 고 특정한 알고리즘 절 차 를 다시 정의 하도록 합 니 다.
템 플 릿 방법 모델 을 사용 하면 복잡 한 절차 의 실현 절 차 를 일련의 기본 적 인 방법 에 봉 하여 추상 적 인 부모 클래스 에서 템 플 릿 방법 이 라 고 불 리 는 방법 을 제공 하여 이러한 기본 적 인 방법의 집행 순 서 를 정의 할 수 있 고 그 하위 클래스 를 통 해 부모 클래스 의 특정한 절 차 를 덮어 서 같은 알고리즘 프레임 워 크 가 서로 다른 실행 결 과 를 얻 을 수 있다.
       템 플 릿 방법 모델 은 템 플 릿 방법 으로 알고리즘 프레임 워 크 를 정의 하고 일부 구체 적 인 절차 의 실현 은 하위 클래스 에서 이 루어 질 수 있 습 니 다.
       템 플 릿 방법 모드 의 역할:
 (1) AbstractClass (추상 류): 추상 류 에서 일련의 기본 적 인 조작 을 정의 했다. 이런 기본 적 인 조작 은 구체 적 일 수도 있 고 추상 적 일 수도 있다. 모든 기본 적 인 조작 이 대응 하 는 알고리즘 의 한 단계 가 그 하위 클래스 에서 이러한 절 차 를 다시 정의 하거나 실현 할 수 있다.이 동시에 추상 류 에서 하나의 템 플 릿 방법 을 실현 하여 알고리즘 의 구 조 를 정의 하 는 데 사용 했다. 템 플 릿 방법 은 추상 류 에서 실현 하 는 기본 적 인 방법 을 호출 할 수 있 을 뿐만 아니 라 추상 류 의 하위 류 에서 실현 하 는 기본 적 인 방법 도 호출 할 수 있 고 다른 대상 에서 의 방법 도 호출 할 수 있다.
 (2) ConcreteClass (구체 적 인 하위 클래스): 추상 적 인 하위 클래스 로 부모 클래스 에서 설명 하 는 추상 적 인 기본 작업 을 실현 하여 하위 클래스 의 특정한 알고리즘 을 완성 하 는 절 차 를 실현 하고 부모 클래스 에서 이미 실 현 된 구체 적 인 기본 작업 을 덮어 쓸 수 있다.
       구체 적 인 실현 코드 는 다음 과 같다.
        추상 적 역할
public abstract class ModeMethod {
	/**
	 *     :  
	 */
	public void treat() {
		order();//   
		eatSomething();//    
		payMoney();//   
	}

	private void order() {
		System.out.println("     ,      ");
		System.out.println("    ,    ");
		System.out.println("    ");
	}

	abstract void eatSomething();

	private void payMoney() {
		System.out.println("   ,      ");
		System.out.println("    ");
	}
}

구체 적 인 하위 역할
하위 클래스 1
하위 클래스 2
public class Guest1 extends ModeMethod{

	@Override
	void eatSomething() {
		System.out.println("   1      ");
		
	}
}

테스트 클래스
결 과 는 다음 과 같다.
public class Guest2 extends ModeMethod{
   

	@Override
	void eatSomething() {
		System.out.println("   2        ,    ,    ,    ....");
		
	}
}

 
템 플 릿 방법 모드 에 서 는 대상 을 대상 으로 하 는 다 형 성 때문에 하위 클래스 대상 이 실 행 될 때 부모 클래스 대상 을 덮어 씁 니 다. 하위 클래스 에서 정의 하 는 방법 도 부모 클래스 에서 정의 하 는 방법 을 덮어 씁 니 다. 따라서 프로그램 이 실 행 될 때 구체 적 인 하위 클래스 의 기본 방법 은 부모 클래스 에서 정의 하 는 기본 방법 을 덮어 씁 니 다.
글 참고:http://blog.csdn.net/lovelion/article/details/8299794
위 에서 말 한 것 에 대해 궁금 한 점 이 있 으 면 지적 해 주 십시오. 감사합니다!

좋은 웹페이지 즐겨찾기