javascript 디자인 모델 C 템 플 릿 방법 모델 원리 와 용법 사례 분석
소개:템 플 릿 방법 모델 은 구조 가 가장 간단 한 행위 형 디자인 모델 로 그 구조 에 부모 류 와 하위 류 간 의 계승 관계 만 존재 한다.템 플 릿 방법 모델 을 사용 하면 복잡 한 절차 의 실현 절 차 를 일련의 기본 적 인 방법 에 밀봉 할 수 있다.
정의:작업 중의 알고리즘 프레임 워 크 를 정의 하고 일부 절 차 를 하위 클래스 로 지연 시 킵 니 다.템 플 릿 방법 은 하위 클래스 가 알고리즘 의 구 조 를 바 꾸 지 않 고 이 알고리즘 의 특정한 절 차 를 다시 정의 할 수 있 습 니 다.템 플 릿 방법 은 일종 의 행위 형 모델 이다.
장면:우 리 는 서로 다른 게임 을 실행 하기 위해 게임 기 를 설계 했다.
예시:
var Game = function(){
this.play = function(){
this.initialize();
this.startPlay();
this.endPlay();
this.uninstall();
}
this.uninstall = function(){
console.log('uninstall Game')
}
}
var CrossFire = function(){
this.initialize = function(){
console.log('CrossFire initialize')
}
this.startPlay = function(){
console.log('CrossFire startPlay')
}
this.endPlay = function(){
console.log('CrossFire endPlay')
}
}
CrossFire.prototype = new Game();
var LeagueofLegends = function(){
this.initialize = function(){
console.log('LeagueofLegends initialize')
}
this.startPlay = function(){
console.log('LeagueofLegends startPlay')
}
this.endPlay = function(){
console.log('LeagueofLegends endPlay')
}
}
LeagueofLegends.prototype = new Game();
var cf = new CrossFire();
cf.play();
// CrossFire initialize
// CrossFire startPlay
// CrossFire endPlay
// uninstall Game
var lol = new LeagueofLegends();
lol.play();
// LeagueofLegends initialize
// LeagueofLegends startPlay
// LeagueofLegends endPlay
// uninstall Game
이 예 에서 Game 은 추상 류 라 고 부 르 고 추상 류 내부 에서 템 플 릿 방법 play 를 정 의 했 습 니 다.play 의 내부 에서 알고리즘 의 구조,알고리즘 의 집행 순 서 를 정 의 했 습 니 다.하위 클래스 가 절 차 를 보완 해 야 템 플 릿 방법 을 실행 할 수 있 습 니 다.League of Legends,CrossFire 라 는 두 가지 유형 을 하위 클래스 라 고 부 르 며 Game 에서 계승 하 는 임 무 는 템 플 릿 방법 을 실현 하 는 절차 입 니 다.
initialize,startPlay,endPlay,uninstall 을 기본 방법 이 라 고 하 며 모든 절 차 를 구체 적 으로 실현 합 니 다.
템 플 릿 방법 모드 요약:
장점:
*템 플 릿 방법 모델 은 코드 재 활용 기술 로 공공 행 위 를 부모 클래스 에 두 고 하위 클래스 를 통 해 서로 다른 행 위 를 실현 하 는 것 이다.그 는 적절 한 계승 을 통 해 코드 재 활용 을 실현 하도록 격려 한다.
*템 플 릿 방법 은 역방향 제어 구 조 를 실현 할 수 있 으 며,하위 클래스 가 부모 클래스 를 덮어 쓰 는 방법 으로 특정한 절차 가 실 행 될 지 여 부 를 결정 할 수 있 습 니 다.
단점:
*모든 기본 적 인 방법 에 따라 하나의 자 류 를 제공 해 야 합 니 다.만약 에 아버지 류 에서 가 변 적 인 기본 적 인 방법 이 너무 많 으 면 유형의 개수 가 증가 하고 시스템 이 더욱 커 질 것 입 니 다.
적용 필드:
*일부 복잡 한 알고리즘 을 분할 하고 그 중에서 고정 적 으로 변 하지 않 는 부 펑 을 템 플 릿 방법 과 아버지 류 의 기본 적 인 방법 으로 디자인 하여 변 화 된 디 테 일 은 서브 클래스 에서 이 루어 집 니 다.
*각 하위 클래스 의 공공 행 위 는 추출 되 고 집합 에 부모 클래스 가 있어 야 코드 재 활용 에 유리 합 니 다.
*하위 클래스 가 부모 클래스 의 특정한 절 차 를 실행 할 지 여 부 를 결정 하고 하위 클래스 가 부모 클래스 에 대한 역방향 통 제 를 실현 해 야 합 니 다.
관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,javascript 대상 입문 강좌,JavaScript 오류 및 디 버 깅 기술 요약,JavaScript 데이터 구조 와 알고리즘 기술 총화과JavaScript 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.