javascript 디자인 모델 C 방문 자 모델 원리 와 용법 사례 분석

본 논문 의 사례 는 자바 script 디자인 모델 C 방문 자 모델 의 원리 와 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
소개:방문 자 모델 은 비교적 복잡 하 다.방문 자 와 방문 당 하 는 요소 두 가지 주요 구성 부분 을 포함한다.이런 방문 당 하 는 요 소 는 보통 서로 다른 유형 을 가지 고 서로 다른 방문 자 는 그들 에 게 서로 다른 방문 작업 을 할 수 있다.방문 자 모델 의 주요 목적 은 데이터 구조 와 데이터 조작 을 분리 하 는 것 이다.
정의:특정한 대상 구조 에 작용 하 는 요소 의 조작 표 시 를 제공 하여 각 요소 의 유형 을 바 꾸 지 않 는 전제 에서 이러한 요소 에 작용 하 는 새로운 조작 을 정의 할 수 있 습 니 다.방문 자 모드 는 대상 행위 형 모델 이다.
장면:PC 구조 demo 를 사용 하여 방문 자 모드 를 설명 합 니 다.
예시:

var Keyboard = function(){
  this.accept = function(computerPartVisitor){
    computerPartVisitor.visit(this);
  }
}
 
var Monitor = function(){
  this.accept = function(computerPartVisitor){
    computerPartVisitor.visit(this);
  }
}
 
var Mouse = function(){
  this.accept = function(computerPartVisitor){
    computerPartVisitor.visit(this);
  }
}
 
var Computer = function(){
  var parts = [new Keyboard(), new Monitor(), new Mouse()];
 
  this.accept = function(computerPartVisitor){
    computerPartVisitor.visit(this);
    _acceptAll(computerPartVisitor);
  }
 
  var _acceptAll = function(computerPartVisitor){
    parts.map(function(item){
      item.accept(computerPartVisitor)
    });
  }
}
 
var ComputerPartDisplayVisitor = function(){
  this.visit = function(item){
    if(item.constructor == Keyboard){
      console.log("Displaying Keyboard.");
    }else if(item.constructor == Monitor){
      console.log("Displaying Monitor.");
    }else if(item.constructor == Mouse){
      console.log("Displaying Mouse.");
    }else if(item.constructor == Computer){
      console.log("Displaying Computer.");
    }else{
      console.log("Error");
    }
  }
}
 
var computer = new Computer();
computer.accept(new ComputerPartDisplayVisitor());
// Displaying Computer.
// Displaying Keyboard.
// Displaying Monitor.
// Displaying Mouse.

이 모델 은 비교적 복잡 하 다.우 리 는 먼저 구성 을 소개 한다.
  • Computer PartDisplayVisitor 는 방문 자 라 고 하 는데 대상 구조의 모든 구체 적 인 요소,예 를 들 어 Keyboard,Mouse 등 은 방문 작업 을 설명 합 니 다.키보드 에 접근 하면 Displaying Keyboard 를 출력 합 니 다.
  • 키보드,Monitor,Mouse 는 요소 라 고 부 릅 니 다.그들 은 accept 방법 을 포함 하여 전 달 된 방문 자
  • 를 촉발 합 니 다.
  • Computer 는 대상 구조 라 고 부 르 는데 이것 은 요소 의 집합 이다.parts 배열 은 서로 다른 방문 자가 방문 할 수 있 도록 요소 대상 을 저장 하 는 데 사 용 됩 니 다.acceptAll 방법 은 내부 요 소 를 옮 겨 다 니 는 데 사 용 됩 니 다.
  • 방문 자 는 accept 를 통 해 요소 내 부 를 방문 하고 요소 내부 도 매개 변 수 를 통 해 방문 자의 visit 방법 을 호출 할 수 있다.이런 호출 메커니즘 을 이중 분파 라 고 한다.4567918)
    방문 자 모드 요약:
    장점:
    *새로운 방문 작업 을 추가 하 는 것 이 편리 합 니 다.새로운 방문 자 클래스 만 추가 하면 됩 니 다.
    *원색 대상 에 대한 방문 행 위 를 한 방문 자 대상 에 집합 시 키 면 이러한 직책 이 더욱 뚜렷 합 니 다.
    *사용자 가 기 존의 요소 차원 구 조 를 수정 하지 않 은 상태 에서 이 차원 구조 에 작용 하 는 조작 을 정의 하도록 합 니 다.
    단점:
    *새로운 요소 클래스 를 추가 하 는 것 은 매우 어렵 습 니 다.방문 자 모드 에서 새로운 요 소 를 추가 할 때마다 방문 자의 동작 을 추가 해 야 합 니 다.
    *봉인 파괴.방문 자 모드 는 방문 자 대상 에 게 모든 요소 대상 의 조작 을 방문 하고 호출 하 라 고 요구 하 는데 이것 은 요소 가 내부 조작 과 내부 상 태 를 노출 해 야 한 다 는 것 을 의미한다.
    적용 필드:
    *하나의 대상 구 조 는 여러 유형의 대상 을 포함 하고 이러한 대상 에 대해 구체 적 인 유형 에 의존 하 는 작업 을 실시 하고 자 합 니 다.
    *대상 구조 중의 대상 에 대해 가로 가 다 르 고 관련 이 없 는 조작 을 해 야 하 며 이러한 조작 이 이러한 대상 의 종 류 를 오염 시 키 지 않도록 해 야 한다.
    *대상 구조 에서 대상 이 대응 하 는 종 류 는 거의 바 뀌 지 않 지만 대상 구조 에서 새로운 조작 을 다시 정의 해 야 합 니 다.
    관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
    자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,javascript 대상 입문 강좌,JavaScript 오류 및 디 버 깅 기술 요약,JavaScript 데이터 구조 와 알고리즘 기술 총화JavaScript 스 트 리밍 알고리즘 및 기술 총화.
    본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
  • 좋은 웹페이지 즐겨찾기