프 록 시 모드 를 사용 하여 C\#디자인 모델 개발 의 기초 튜 토리 얼 을 진행 합 니 다.

4181 단어 디자인 모드C#
개술
소프트웨어 개발 에서 일부 대상 은 창설 원가 가 높 고 방문 할 때 다른 프로 세 스 와 상호작용 을 해 야 하기 때문에 직접 방문 하면 시스템 속도 가 느 리 고 복잡 도가 커진다 는 등 문 제 를 초래 할 수 있다.이 때 프 록 시 모드 를 사용 하여 시스템 에 간접 층 을 추가 하고 간접 층 방문 대상 을 통 해 시스템 의 복잡성 을 숨 기 고 시스템 성능 을 향상 시 키 는 목적 을 달성 할 수 있다.
2.대리 모델 에 대한 상세 한 소개
프 록 시 모드 는 이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 프 록 시 를 제공 합 니 다.그 구조 도 는 다음 과 같다.
201622392005225.gif (405×252)
Subject 는 RealSubject 와 Proxy 가 공유 하 는 인 터 페 이 스 를 정의 하여 RealSubject 를 사용 하 는 모든 곳 에서 Proxy 를 사용 할 수 있 도록 합 니 다.
RealSubject 는 Proxy 가 대표 하 는 실 체 를 정의 합 니 다.
Proxy 는 클 라 이언 트 가 사용 할 수 있 도록 RealSubject 를 제어 하 는 에이 전 트 를 정의 합 니 다.
대리 모드 는 사용 목적 에 따라 다음 과 같은 몇 가지 로 나 눌 수 있다.
원 격(Remote)에이전트:서로 다른 주소 공간 에 있 는 대상 에 게 국 역 대표 대상 을 제공 합 니 다.이 서로 다른 주소 공간 은 이 컴퓨터 일 수도 있 고 다른 컴퓨터 에 있 을 수도 있다.가장 전형 적 인 예 는 클 라 이언 트 가 웹 서비스 나 WCF 서 비 스 를 호출 하 는 것 이다4.567917.가상(Virtual)에이전트:필요 에 따라 자원 소모 가 비교적 큰 대상 을 만 들 고 대상 이 필요 할 때 만 진정 으로 만 들 수 있 습 니 다복사-on-write 대리:가상 에이전트 의 하나 로 복사(또는 복제 라 고 함)를 클 라 이언 트 가 필요 할 때 만 진정 으로 행동 할 수 있 습 니 다4.567917.보호(Protect or Access)에이전트:한 대상 의 방문 을 제어 하고 서로 다른 사용자 에 게 서로 다른 등급 의 사용 권한 을 제공 할 수 있 습 니 다
  • 방화벽(Firewall)대리:목표 가 악성 사용자 에 게 접근 하지 않도록 보호 합 니 다
  • 4.567917.스마트 참조(Smart Reference)대리:한 대상 이 인용 되 었 을 때 추가 적 인 조작 을 제공 합 니 다.예 를 들 어 이 대상 이 호출 된 횟수 를 기록 하 는 등 입 니 다
  • Cache 대리:특정한 목표 가 조작 한 결과 에 임시 저장 공간 을 제공 하여 여러 클 라 이언 트 가 이러한 결 과 를 얻 을 수 있 도록 합 니 다
  • 위의 모든 종류의 에이전트 모델 에서 가상 에이전트,원 격 에이전트,스마트 참조 에이전트 와 보호 에이전트 가 흔히 볼 수 있 는 에이전트 모델 입 니 다.다음은 프 록 시 모델 의 구체 적 인 정 의 를 구체 적 으로 살 펴 보 자.
    2.1 정의
    대리 모델-특정한 대상 에 게 대 리 를 제공 하고 대리 대상 이 원래 대상 에 대한 인용 을 제어 하 는 것 이다.일부 상황 에서 한 고객 이 한 대상 을 직접 인용 하고 싶 지 않 거나 인용 할 수 없 으 며 대리 대상 은 클 라 이언 트 와 목표 대상 사이 에서 중개 역할 을 할 수 있다.예 를 들 어 컴퓨터 데스크 톱 의 단축 키 는 프 록 시 대상 이 고 단축 키 는 인 용 된 프로그램의 에이전트 입 니 다.
    2.2 프 록 시 모드 구현
    대리 모델 에 대한 설명 을 본 후에 다음 과 같은 생활 속 의 예 를 들 어 대리 모델 을 설명 한다.현실 생활 에서 동료 가 출국 하거나 친구 가 출국 하 는 상황 에서 우 리 는 이 친구 에 게 전자 제품 이나 화장품 등 을 가 져 다 달라 고 부탁 하 는 경우 가 많다.이 장면 에서 출국 하 는 친 구 는 대리 이다.그 는 그의 친구 의 대리 이다.그의 친구 가 외국 에 가서 물건 을 살 수 없 기 때문에 그 는 할 수 있 기 때문에 친구 들 이 모두 그 에 게 물건 을 가 져 다 달라 고 부탁 했다.다음은 이 장면 으로 대리 모델 을 실현 하고 구체 적 인 코드 는 다음 과 같다.
    
    //      
      class Client
      {
        static void Main(string[] args)
        {
          //              
          Person proxy = new Friend();
          proxy.BuyProduct();
          Console.Read();
        }
      }
      //       
      public abstract class Person
      {
        public abstract void BuyProduct();
      }
      //      
      public class RealBuyPerson : Person
      {
        public override void BuyProduct()
        {
          Console.WriteLine("     IPhone       ");
        }
      }
      //     
      public class Friend:Person
      {
        //         
        RealBuyPerson realSubject;
        public override void BuyProduct()
        {
          Console.WriteLine("                ");
          if (realSubject == null)
          {
            realSubject = new RealBuyPerson();
          }
          this.PreBuyProduct();
          //         
          realSubject.BuyProduct();
          this.PostBuyProduct();
        }
        //            
        public void PreBuyProduct()
        {
          //                 ,                           
          Console.WriteLine("      ,       ,  :    ,  :  Iphone...........");
        }
                 
        //       ,                         
        public void PostBuyProduct()
        {
          Console.WriteLine("     ,         ,      ;Iphone    ..........");
        }
      }
    
    위의 코드 에 상응하는 주석 이 있 는데,여기에 도 설명 이 많 지 않다.
    3.대리 모델 의 장단 점
    대리 모델 을 전면적으로 분석 한 후에 이 모델 의 장단 점 을 살 펴 보 자.
    장점:
    프 록 시 모드 는 실제 호출 된 대상 을 격 리 시 켜 시스템 의 결합 도 를 어느 정도 낮 출 수 있 습 니 다.
    대리 대상 은 클 라 이언 트 와 목표 대상 사이 에서 중개 역할 을 하면 목표 대상 에 대한 보 호 를 할 수 있다.프 록 시 대상 은 대상 에 게 요청 을 하기 전에 권한 검사 등 추가 작업 을 할 수 있 습 니 다.
    단점:
    클 라 이언 트 와 실제 테마 사이 에 프 록 시 대상 을 추가 하기 때문에 요청 한 처리 속도 가 느 려 집 니 다.
    대리 류 를 실현 하 는 데 도 추가 적 인 업무 가 필요 하여 시스템 의 실현 복잡 도 를 증가 시 켰 다.

    좋은 웹페이지 즐겨찾기