javascript 디자인 모델 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.
이 모델 은 비교적 복잡 하 다.우 리 는 먼저 구성 을 소개 한다.방문 자 모드 요약:
장점:
*새로운 방문 작업 을 추가 하 는 것 이 편리 합 니 다.새로운 방문 자 클래스 만 추가 하면 됩 니 다.
*원색 대상 에 대한 방문 행 위 를 한 방문 자 대상 에 집합 시 키 면 이러한 직책 이 더욱 뚜렷 합 니 다.
*사용자 가 기 존의 요소 차원 구 조 를 수정 하지 않 은 상태 에서 이 차원 구조 에 작용 하 는 조작 을 정의 하도록 합 니 다.
단점:
*새로운 요소 클래스 를 추가 하 는 것 은 매우 어렵 습 니 다.방문 자 모드 에서 새로운 요 소 를 추가 할 때마다 방문 자의 동작 을 추가 해 야 합 니 다.
*봉인 파괴.방문 자 모드 는 방문 자 대상 에 게 모든 요소 대상 의 조작 을 방문 하고 호출 하 라 고 요구 하 는데 이것 은 요소 가 내부 조작 과 내부 상 태 를 노출 해 야 한 다 는 것 을 의미한다.
적용 필드:
*하나의 대상 구 조 는 여러 유형의 대상 을 포함 하고 이러한 대상 에 대해 구체 적 인 유형 에 의존 하 는 작업 을 실시 하고 자 합 니 다.
*대상 구조 중의 대상 에 대해 가로 가 다 르 고 관련 이 없 는 조작 을 해 야 하 며 이러한 조작 이 이러한 대상 의 종 류 를 오염 시 키 지 않도록 해 야 한다.
*대상 구조 에서 대상 이 대응 하 는 종 류 는 거의 바 뀌 지 않 지만 대상 구조 에서 새로운 조작 을 다시 정의 해 야 합 니 다.
관심 있 는 친 구 는 온라인 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에 따라 라이센스가 부여됩니다.