JS 디자인 모델 의 명령 모델 개념 과 용법 분석
클 라 이언 트 생 성 명령;호출 자가 이 명령 을 수행 합 니 다.수신 자 는 명령 이 실 행 될 때 해당 동작 을 수행한다
간단 한 명령 대상 은 일반적으로 두 대상(호출 자 와 수신 자)간 의 결합 을 없 애 는 데 사용 되 며,복잡 한 명령 대상 은 일반적으로 구분 할 수 없 거나 사무 적 인 명령 을 패키지 하 는 데 사용 된다.
명령 모드 의 주요 용 도 는 호출 대상(사용자 인터페이스,API,에이전트 등)과 작업 을 수행 하 는 대상 을 분리 하 는 것 이다.두 대상 간 의 상호작용 방식 이 더욱 높 은 모듈 화 정도 가 필요 할 때 이런 모델 을 사용 할 수 있다.
명령 은 이 명령 과 관련 된 실제 작업 을 간단 한 방법 이나 함수 로 수행 한 다 는 뜻 이다.리모컨 으로 텔레비전 을 켜 는 것 처럼 버튼 하나만 누 르 면 텔레비전 을 켜 는 것 이 간단 하고 편리 하 다.그것 의 구체 적 인 실현 조작 에 우 리 는 관심 을 가 질 필요 가 없다.그것 은 텔레비전 기기 가 처리 하 는 것 이다.텔레비전 은 리모컨 에 인터페이스(신호)를 제공 하고 리모컨 은 클릭 할 때 이 인 터 페 이 스 를 실현 하면 된다.
Command:
명령 의 인 터 페 이 스 를 정의 하고 실행 방법 을 설명 합 니 다.
ConcreteCommand:
명령 인터페이스 실현 대상 은'허'의 실현 이다.보통 수신 자 를 가지 고 수신 자의 기능 을 호출 하여 명령 이 실 행 될 동작 을 수행 합 니 다.
Receiver:
수신 자,진정 으로 명령 을 집행 하 는 대상.모든 종 류 는 명령 이 요구 하 는 해당 기능 을 실현 할 수 있다 면 수신 자가 될 수 있다.
Invoker:
명령 대상 에 게 요청 을 요청 하면 명령 대상 을 가지 고 많은 명령 대상 을 가 질 수 있 습 니 다.이것 은 클 라 이언 트 가 진정 으로 명령 을 실행 하고 명령 을 실행 하도록 요구 하 는 곳 입 니 다.즉,명령 대상 을 사용 하 는 입구 에 해당 합 니 다.
Client:
구체 적 인 명령 대상 을 만 들 고 명령 대상 의 수신 자 를 설정 합 니 다.이것 은 우리 의 일반적인 의미 의 클 라 이언 트 가 아니 라 조립 명령 대상 과 수신 자 입 니 다.아마도 이 클 라 이언 트 를 조립 자라 고 부 르 면 더 잘 이해 할 수 있 습 니 다.명령 을 진정 으로 사용 하 는 클 라 이언 트 는 Invoker 에서 실행 되 기 때 문 입 니 다.
패턴 분석
1.명령 모드 의 본질은 명령 을 봉인 하고 명령 을 내 리 는 책임 과 명령 을 집행 하 는 책임 을 분리 하 는 것 이다.
2.모든 명령 은 하나의 조작 입 니 다.요청 한 측 이 요청 을 하고 하나의 조작 을 요구 합 니 다.받 은 쪽 에서 요청 을 받 고 작업 을 수행 합 니 다.
3.명령 모드 는 요청 한 측 과 받 은 측 이 독립 적 으로 분리 되 어 요청 한 측 이 요청 을 받 은 측의 인 터 페 이 스 를 알 필요 가 없고 요청 이 어떻게 받 아들 여 졌 는 지,작업 이 실행 되 었 는 지,언제 실행 되 었 는 지,어떻게 실행 되 었 는 지 알 필요 가 없다.
4.명령 모드 는 요청 자 체 를 하나의 대상 으로 만 들 고 이 대상 은 다른 대상 과 마찬가지 로 저장 되 고 전 달 될 수 있 습 니 다.
5.명령 모드 의 관건 은 추상 적 인 명령 인 터 페 이 스 를 도입 하고 발송 자가 추상 적 인 명령 인터페이스 에 대해 프로 그래 밍 을 하 는 것 이다.추상 적 인 명령 인터페이스의 구체 적 인 명령 을 실현 해야만 수신 자 와 관련 이 있다.
패턴 장점
1.대상 간 의 결합 도 를 낮 춘 다.
2.새로운 명령 은 시스템 에 쉽게 가입 할 수 있다.
3.조합 명령 을 비교적 쉽게 설계 할 수 있다.
4.같은 방법 으로 다른 기능 수행
//
var CreateCommand = function( receiver ){
this.receiver = receiver;
}
CreateCommand.prototype.execute = function() {
this.receiver.action();
}
//
var TVOn = function() {}
TVOn.prototype.action = function() {
alert("TVOn");
}
//
var TVOff = function() {}
TVOff.prototype.action = function() {
alert("TVOff");
}
//
var Invoker = function( tvOnCommand, tvOffCommand ) {
this.tvOnCommand = tvOnCommand;
this.tvOffCommand = tvOffCommand;
}
Invoker.prototype.tvOn = function() {
this.tvOnCommand.execute();
}
Invoker.prototype.tvOff = function() {
this.tvOffCommand.execute();
}
실행 클 라 이언 트
var tvOnCommand = new CreateCommand( new TVOn() );
var tvOffCommand = new CreateCommand( new TVOff() );
var invoker = new Invoker( tvOnCommand, tvOffCommand );
invoker.tvOn();
invoker.tvOff();
더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,,,,,,,,본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.