구조형 모델 유형: 대리 모델--남의 여동생 대신

3421 단어
얼마 전에 겁쟁이 친구가 여자친구를 소개해 달라고 했어요. 약칭 송하이라고 해서 친구에게 부탁해서 하나 물색했어요.그러면 어떻게 이 찌질이가 시작할 때 이야기를 나누지 못하게 할 것인가, 그러면 쌍방이 초보적인 이해를 하게 할 수 없다.이럴 때는 대리 모드가 필요하다.

정의


말 그대로 남을 돕는 일(zuo)일(mei), 해(la)결(pi)문(tiao)문제,
프록시 모드 (Proxy) 는 다른 대상에게 프록시를 제공하여 이 대상의 접근을 제어합니다.먼저 송하이는 상대방의 이름을 알아야 한다. 좋은 인상을 위해 시작에 BMW를 보냈는데 돈이 모자라지 않았다.
//  
var girl = function (name) {
    this.name = name;
};

//  
var songHai= function (girl) {
    this.girl = girl;
    this.sendGift= function (gift) {
        alert("Hi " + girl.name + ",  :" + gift);
    }
};

//  
var proxyGoodMen = function (girl) {
    this.girl = girl;
    this.sendGift = function (gift) {
        (new songHai(girl)).sendGift(gift); //  songHai 
    }
};



SongHai와proxyGoodMen 사이에는 속성과 방법이 비슷하지만, 대상인songHai가 어떤 이유로sendGift를 직접 실행하기가 불편하기 때문에proxyGoodMen이 대신 실행해야 한다.

실행 방식

var proxy = new proxyTom(new girl(" "));
proxy.sendGift(" ");

프록시 모드 공통 장면

  • 1. 원격 에이전트는 한 대상이 서로 다른 주소 공간에 국부적인 대표를 제공하기 위해 한 대상이 서로 다른 주소 공간에 존재한다는 사실을 숨길 수 있다. 마치 웹 서비스의 에이전트 종류와 같다.
  • 2. 가상 에이전트는 필요에 따라 비용이 많이 드는 대상을 만들고 이를 통해 실례화되는 데 시간이 오래 걸리는 실제 대상을 저장하면 성능의 최적화를 얻을 수 있다. 예를 들어 HTML 페이지를 열 때 안에 많은 문자와 그림이 있을 수 있고 전체 페이지는 곧 열 수 있지만 이때 보이는 것은 모든 문자이다. 그림은 한 장을 불러온 후에 볼 수 있다.다운로드하지 않은 이미지 대체 구역은 가상 에이전트를 통해 실제 이미지를 대체하는 것이다
  • 3. 안전 에이전트는 실제 대상이 방문할 때의 권한을 제어하는데 일반적으로 대상이 서로 다른 접근 권한을 가져야 한다.
  • 4. 스마트 가이드는 실제 대상을 호출할 때 다른 일을 대리 처리하는 것을 말한다.

  • 프록시 모델은 대상을 방문할 때 어느 정도의 간접성을 도입하는 것이다. 이런 간접성은 여러 가지 용도를 추가할 수 있기 때문이다.

    가상 에이전트로 그림loading 구현


    다음 코드를 보세요.
    var myImage = (function(){
        var imgNode = document.createElement("img");
        imgNode.alt='imgNode'
        document.body.appendChild(imgNode);
        return {
            setSrc: function(src){
                imgNode.src = src;
                console.log('1')
            } 
        }
    }());
    
    var proxyImage = (function(){
        /** img, , 
         src 。
        **/
        var img = new Image();
        img.onload = function(){
            console.log('4')
            myImage.setSrc( this.src );
            console.log('5')
        }
        return {
        setSrc: function(src){
            console.log('2')
            myImage.setSrc( "loading.gif" );
            console.log('3')
            img.src = src;
        }
      }
    })();
    
    proxyImage.setSrc("load.jpg");
    

    인쇄된 결과:
    1
    3
    /**img.src = src   img  , img.onload **/
    4
    1
    5
    

    proxyImage 객체가 먼저 myImage를 호출했습니다.setsrc 방법, 불러오는 속도가 빠르거나 자주 캐시된 그림을 불러옵니다. 불러올 그림 src를 임의의 대상에게 값을 부여하고 임의의 대상을 통과합니다.onload 모니터링은 그림을 불러올 지 여부입니다. 그리고 myImage를 다시 호출합니다.setSrc 메서드.

    es6의 proxy


    Proxy를 지원하는 브라우저 환경Proxy은 전역 대상이므로 직접 사용할 수 있습니다.Proxy(target, handler)는 구조 함수이고 target는 대리된 대상handlde이다. 각종 대리 조작을 성명한 대상이고 최종적으로 하나의 대리 대상으로 돌아간다.외부에서 대리 대상을 통해 방문target 대상의 속성을 통과할 때마다handler 대상을 거친다. 이 절차를 보면 대리 대상은 매우 유사middleware(중간부품)이다.그러면 Proxy 어떤 조작을 차단할 수 있습니까?가장 흔히 볼 수 있는 것은 get( ), set( ) 대상 속성 등 조작, 완전한 조작이다.

    요약:


    프록시 모드를 사용하려면 다음과 같이 하십시오.
  • 객체에 대한 액세스 차단 또는 제어
  • 모호한 규칙이나 보조 논리 방법/류의 복잡성을 간소화
  • 검증/준비 전에 중-자원 동작을 방지한다.

  • 완성을 기다렸을 때, 다른 응용 코드는 보충되지 않았고, 어쨌든 아무도 보지 않았다.gif

    좋은 웹페이지 즐겨찾기