javascript 디자인 모델 C 해석 기 모델 원리 와 용법 실례 분석
소개:이전에 자바 개발 을 할 때 데이터 베 이 스 를 추가 삭제 하고 수정 하 는 것 이 매우 빈번 하 며 장면 에 따라 필요 한 SQL 문장 페이지 가 다 릅 니 다.어떻게 호출 방법의 형식 으로 sql 문 구 를 사용 하여 sql 문 구 를 조합 합 니까?이것 이 바로 이 절 에서 우리 가 말 하고 자 하 는 해석 기 모델 이다.
정의:한 언어의 문법 을 정의 하고 해석 기 를 만들어 이 언어의 문장 을 해석 합 니 다.이 언어 는 규정된 형식 과 문법 을 사용 하 는 코드 를 말 합 니 다.해석 기 모드 는 행위 형 모드 이다.
장면:우 리 는 전달 하 는 숫자 가 홀수 인지 짝수 인지,양수 인지,마이너스 인지,양수 인지,마이너스 인지 판단 하 는 해석 기 를 실현 한다.
예시:
var TerminalExpression = function(data){
this.data = data;
this.interpret = function(context){
if(context === this.data){
return true;
}
return false;
}
}
var OrExpression = function(exprArr){
this.exprArr = exprArr;
this.interpret = function(context){
var isMatch = false;
this.exprArr.map(function(item){
if(item.interpret(context)){
isMatch = true;
}
})
return isMatch;
}
}
var AndExpression = function(exprArr){
this.exprArr = exprArr;
this.interpret = function(context){
var isMatch = true;
this.exprArr.map(function(item){
if(!item.interpret(context)){
isMatch = false;
}
})
return isMatch;
}
}
function getEvenExpression(){
var ExpressionList = [];
for(var i = -10; i<100; i++){
if(i % 2 == 0){
ExpressionList.push(new TerminalExpression(i));
}
}
return new OrExpression(ExpressionList);
}
function getOddExpression(){
var ExpressionList = [];
for(var i = -10; i<100; i++){
if(i % 2 != 0){
ExpressionList.push(new TerminalExpression(i));
}
}
return new OrExpression(ExpressionList);
}
function getNegativeOddExpression(){
var ExpressionList = [];
for(var i = -10; i<100; i++){
if(i < 0){
ExpressionList.push(new TerminalExpression(i));
}
}
return new OrExpression(ExpressionList);
}
var isEven = getEvenExpression();
var isOdd = getOddExpression();
var isNegative = getNegativeOddExpression();
var isNegativeAndOdd = new AndExpression([isNegative,isOdd]);
console.log('2 ? ' + isEven.interpret(2));//2 ? true
console.log('3 ? ' + isEven.interpret(3));//3 ? false
console.log('3 ? ' + isOdd.interpret(3));//3 ? true
console.log('3 ? ' + isNegative.interpret(3));//3 ? false
console.log('-3 ? ' + isNegative.interpret(-3));//-3 ? true
console.log('-3 ? ' + isNegativeAndOdd.interpret(-3));//-3 ? true
console.log('-4 ? ' + isNegativeAndOdd.interpret(-4));//-4 ? false
console.log('3 ? ' + isNegativeAndOdd.interpret(3));//3 ? false
위의 예 에서 TerminalExpression 은 종결 부 표현 식 류 라 고 불 리 며,밑 에 있 는 판단 조건 을 봉인 합 니 다.일반 해석 기 모드 에 서 는 몇 개의 종결 부 표현 식 류 만 존재 합 니 다.OrExpression,AndExpression 은 비 종결 부 표현 식 류 라 고 하 는데 여러 개의 종결 부 표현 식 을 조합 하여 상대 적 으로 복잡 한 논 리 를 만 드 는 것 입 니 다.
해석 기 모델 의 가장 핵심 적 인 것 은 바로 이 두 가지 유형 이다.그들 이 다양한 조건 을 확장 할 수 있 기 때문이다.
해석 기 모드 의 사용 빈 도 는 그리 높 지 않 지만 정규 표현 식,xml 문서 해석 등 분야 에서 광범 위 하 게 응용 되 었 다.
해석 기 모드 요약:
장점:
*문법 규칙 을 확장 하고 수정 하기 쉽다.추가 시 새로운 종결 문자 표현 식 만 추가 하면 스위치 원칙 에 부합 합 니 다.
단점:
*복잡 한 문법 은 유지 하기 어렵 고 비 종결 식 으로 가득 합 니 다.
*실행 효율 이 낮 습 니 다.대량의 순환 과 재 귀적 호출 을 사 용 했 기 때문에 복잡 한 문장 을 해석 할 때 속도 가 느 립 니 다.
적용 필드:
*실 행 된 언어 에서 설명 이 필요 한 문장 을 추상 문법 트 리 로 표시 할 수 있 습 니 다.
*반복 되 는 문제 들 은 간단 한 언어 로 표현 할 수 있다
*하나의 언어 문법 은 비교적 간단 하 다
*집행 효율 은 중요 한 문제 가 아니다
관심 있 는 친 구 는 온라인 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에 따라 라이센스가 부여됩니다.