SSM 선언 (5) 의 템 플 릿 방법 디자인 모드
3132 단어 SSM 학습 의 SSM 선언
현실 생활 에서 어떤 일 을 완성 하려 면 n 여 개의 고정 적 인 절차 가 필요 하 다.예 를 들 어 '타 오 바 오 에서 쇼핑 을 한다' 는 일의 완성 은 보통 세 가지 절차 가 필요 하 다. 사이트 에 접속 하고 상품 을 고 르 며 돈 을 지불해 야 한다.그러나 사이트 에 접속 하 는 것 과 지불 하 는 두 단계 에 대해 서 는 누구나 거의 같은 조작 이다.하지만 사람마다 고 르 는 상품 이 다르다 는 점 이 다르다.소프트웨어 개발 과정 에서 도 이런 상황 이 존재 한다.어떤 종류의 어떤 방법의 실현 은 몇 가지 고정 적 인 절차 가 필요 하 다.이런 고정 적 인 절차 에서 이런 유형의 서로 다른 대상 에 대해 어떤 절차 의 실현 은 고정 적 이 고 변 하지 않 으 며 어떤 절차 의 실현 은 현저 한 차이 가 있 으 며 어떤 절차 의 실현 은 가 변 적 이 고 변 하지 않 을 수 있다.이런 상황 에 대해 서 는 템 플 릿 방법 으로 디자인 모델 프로 그래 밍 에 적합 하 다.
템 플 릿 방법 디자인 모델 의 정 의 는 작업 중의 특정한 알고리즘 프레임 워 크 를 정의 하고 일부 절 차 를 하위 클래스 로 지연 시 키 는 것 이다.템 플 릿 방법 모델 은 하위 클래스 가 하나의 알고리즘 구 조 를 바 꾸 지 않 는 전제 에서 특정한 절차 에 대해 개성 화 된 정 의 를 실현 하도록 한다.
1.1 템 플 릿 방법 프로그램 구성
템 플 릿 방법 디자인 모드 에 부모 클래스 가 존재 합 니 다.그 중에서 두 가지 방법 이 포함 되 어 있 습 니 다. 템 플 릿 방법 과 절차 방법 입 니 다. 템 플 릿 방법, 즉 특정한 알고리즘 을 실현 하 는 방법 절차 입 니 다.이 절 차 는 모두 호출 된 절차 방법 으로 이 루어 졌 다.
절차 방법, 즉 템 플 릿 방법 을 완성 하 는 모든 단계 적 방법 입 니 다.모든 절차 방법 은 특정한 계산 법의 일부 기능 을 완성 한다.
절차 방법 은 세 가지 유형 이 있 는데 그것 이 바로 추상 적 인 방법, 최종 방법 과 갈고리 방법 이다.
추상 적 인 방법 은 하위 클래스 가 반드시 실현 해 야 하 는 방법 이 고 템 플 릿 방법 을 완성 하 는 알고리즘 절차 에서 반드시 하위 클래스 가 완성 해 야 하 는 개성 화 된 정의 이다. 최종 방법 은 하위 클래스 가 다시 쓸 수 없 는 방법 입 니 다. 템 플 릿 방법의 알고리즘 절 차 를 완성 하려 면 모든 하위 클래스 에 대해 똑 같은 절 차 를 수행 합 니 다.
갈고리 방법 은 부류 가 기본적으로 실현 되 었 으 나 부류 도 다시 쓸 수 있 는 방법 이다.
1.2 프로그램 예시
이 예 는 '타 오 바 오 쇼핑' 이라는 일의 완성 과정 을 모 의 하 는 데 쓰 인 다.
1.2.1 부모 클래스 정의
이 부 류 는 템 플 릿 방법 을 포함 하 는 부 류 를 가리킨다.이 예 는 추상 류 다.
1.2.1 정의 하위 클래스
신발 하위 클래스 구 매
package com.itcast.service;
/**
*
* @author jack
*
*/
public abstract class ShoppingService {
/**
*
*/
public void buyGoods(){
userLogin();
buy();
pay();
}
/**
*
*/
public void userLogin() {
System.out.println(" ");
}
/**
*
*/
public abstract void buy() ;
/**
* :
*/
public void pay() {
System.out.println(" ");
}
}
의 류 구 매
package com.itcast.service;
/**
*
* @author jack
*
*/
public class ShoesShoppingService extends ShoppingService {
@Override
public void buy() {
System.out.println(" ");
}
}
1.2.3 테스트 클래스
package com.itcast.service;
/**
*
* @author jack
*
*/
public class ClothesShoppingService extends ShoppingService {
@Override
public void buy() {
System.out.println(" ");
}
@Override
public void pay(){
System.out.println(" ");
}
}
실행 결과:
package com.itcast.test;
import com.itcast.service.ClothesShoppingService;
import com.itcast.service.ShoesShoppingService;
import com.itcast.service.ShoppingService;
/**
* ---
* @author jack
*
*/
public class ShoppingTest {
public static void main(String[] args) {
ShoppingService shoes =new ShoesShoppingService();
ShoppingService clothes=new ClothesShoppingService();
shoes.buyGoods();
System.out.println("---------------------");
clothes.buyGoods();
}
}