javascript 디자인 모델 C 해석 기 모델 원리 와 용법 실례 분석

본 논문 의 사례 는 자바 script 디자인 모델 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 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기