> 웹 프론트엔드 > JS 튜토리얼 > 자바스크립트 디자인 패턴의 프록시 패턴 소개_javascript 기술

자바스크립트 디자인 패턴의 프록시 패턴 소개_javascript 기술

WBOY
풀어 주다: 2016-05-16 16:24:08
원래의
1187명이 탐색했습니다.

프록시 모드 설명

참고: 이름에서 알 수 있듯이 한 클래스는 메서드 기능을 수행하기 위해 다른 클래스를 대체하는 데 사용됩니다. 차이점은 프록시 모드가 클라이언트를 대신하여 프록시 개체 클래스를 초기화한다는 점입니다. , 데코레이션 모드는 인터페이스를 사용하거나 초기 데코레이터 매개변수 참조를 사용하여 실행합니다.

동적 객체 지향 언어에서 프록시 모드는 프록시 클래스를 제어하고 수정할 뿐만 아니라 프록시 클래스를 완전히 숨기고 보호합니다. 프록시 클래스는 필요할 때만 간접적으로 초기화되고 호출됩니다.

장면 설명:

아주 흔한 예는 집을 임대하는 경우입니다. 세입자는 집을 빌리고 집주인은 임대를 원하지만 세입자도 집주인도 집을 찾을 시간이 없고 누군가를 기다릴 시간이 없습니다. 집에서 집을 보러 같이 주택중개소에 갑니다. 집주인은 임대 및 판매를 위해 중개인에게 방을 맡깁니다. 적절한 사람이 필요할 경우 중개인이 방을 보여주고 임대 비용을 지불합니다. 이는 집주인이 임대한 방을 임대하는 데 도움이 됩니다. 중개인이 요구하는 방 위치 조건을 충족하면 대행사가 세입자가 공유 방을 찾을 수 있도록 도와준 후 두 사람이 비용을 지불하여 세입자에게 집을 임대합니다.

소스 코드 예시

위의 예를 따르세요.

1. 집주인 임대


코드 복사 코드는 다음과 같습니다.
함수 Fangdong() {
This.room = '방 이름';
}
Fangdong.prototype.chuzu = function() {
console.log('집주인이 방을 임대합니다: ' this.room);
}

2. 중개인 클래스:

코드 복사 코드는 다음과 같습니다.
함수 프록시() {
This.fangdong = 새로운 Fangdong();
}
Proxy.prototype.chuzu = function() {

This.fangdong.chuzu();
console.log('임대 후 중개수수료가 부과됩니다.');
}

3. 사용방법:


코드 복사 코드는 다음과 같습니다.
//세입자가 중개인에게 집을 찾는 데 도움을 요청합니다.
var 프록시 = 새 프록시();
Proxy.chuzu();

위 사용법을 보면 클라이언트 측에서는 프록시 클래스가 전혀 필요하지 않습니다. 프록시 클래스를 사용하면 됩니다. 이는 프록시 모드를 사용하여 특정 비즈니스 논리 프로세스를 보호해야 하는 시나리오에서 매우 잘 사용될 수 있습니다. , 쉽게 할 수 있습니다. 좋은 보호에는 보호된 프록시 클래스가 필요합니다.

기타 안내

데코레이터 패턴과 마찬가지로 프록시 패턴도 확장에는 개방적이고 수정에는 폐쇄적인 객체 지향 사고의 원칙을 잘 구현합니다.

프록시 모드에서는 인터페이스 또는 추상 클래스를 사용하여 공통 인터페이스를 표준화할 수 있습니다. (JAVA 프록시 모드는 아래에 제공됩니다.)

1. 추상 클래스 추상 메서드


코드 복사 코드는 다음과 같습니다.
공개 추상 클래스 하우스 {
Public void 추상 chuzu();
}
공개수업 Fangdong 확장 House {

개인 스트링 룸 = “방 이름”;
@오버라이드
공개 무효 chuzu() {
System.out.println(room);
}
}

공개 클래스 프록시 확장 하우스 {

사병팡동팡동;
공용 프록시() {
This.fangdong = 새로운 항동();
}
@오버라이드
공개 무효 chuzu() {
this.fandong.chuzu();
System.out.println("임대 후 중개수수료 납부");
}
}

//

사용 집 house = new Proxy();
house.chuzu();

2. 인터페이스 인터페이스 모드:

코드 복사 코드는 다음과 같습니다.

인터페이스 하우스 {
    공개 무효 chuzu();
}

공공 수업 Fangdong은 House {
를 구현합니다.     개인 스트링 룸 = “房间name称”;
    @오버라이드
    공공 무효 chuzu() {
        System.out.println(room);
    }
}

공개 클래스 프록시는 House {
를 구현합니다.     개인 Fangdong fangdong;
    공개 프록시() {
        this.fangdong = 새로운 항동();
    }
    @오버라이드
    공공 무효 chuzu() {
        this.fandong.chuzu();
        System.out.println(“출租后交中介费”);
    }
}

//사용
집 house = new Proxy();
house.chuzu();

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿