C\#디자인 모델 시리즈 튜 토리 얼-프 록 시 모드

1.개술
이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 에이 전 트 를 제공 합 니 다.
해결 하 는 문제:직접 방문 대상 이 어렵 거나 직접 방문 하면 사용자 나 시스템 에 일련의 문 제 를 가 져 올 수 있다.이렇게 하면 클 라 이언 트(호출 자)에 게 실제 대상 과 직접 상호작용 을 하지 않 아 도 되 고 호출 자 와 실제 대상 의 결합 을 해제 합 니 다.
2.모드 속 캐릭터
2.1 추상 적 인 실체(Subject):실제 실체(RealSubject)와 프 록 시(Proxy)의 공공 인 터 페 이 스 를 정의 합 니 다.그러면 언제든지 실제 실체(RealSubject)를 사용 하 는 곳 에서 프 록 시(Proxy)를 사용 합 니 다.
2.2 프 록 시(Proxy):프 록 시가 실제 실체 에 직접 접근 할 수 있 도록 인용 을 저장 하고 Subject 의 인터페이스 와 같은 인 터 페 이 스 를 제공 합 니 다.그러면 프 록 시가 실제 실 체 를 대체 할 수 있 습 니 다.
2.3 실제 실체(RealSubject):Proxy 가 대표 하 는 실제 실 체 를 정의 합 니 다.
3.패턴 판독
3.1 프 록 시 모드 의 도표
//img.jbzj.com/file_images/article/201606/2016060111270327.png
3.2 프 록 시 모드 의 코드 구현
3.2.1 추상 적 인 실체,실제 실체 와 대리 의 공공 인 터 페 이 스 를 정의 한다.

 /// <summary>
 ///     ,              
 /// </summary>
 public interface ISubject
 {
  void Function1();
  void Function2();
 }
3.2.2 진실 한 실체,진정한 기능 실현 자

 /// <summary>
 ///     ,        
 /// </summary>
 public class RealSubject:ISubject
 {

  public void Function1()
  {
   Console.WriteLine("This is the first function.");
  }

  public void Function2()
  {
   Console.WriteLine("This is the second function.");
  }
 }
3.2.3 대리,실제 실 체 를 제어 하고 방문 하 는 데 사용

 /// <summary>
 ///   ,         
 /// </summary>
 public class Proxy : ISubject
 {
  /// <summary>
  ///         ,               。
  /// </summary>
  private RealSubject realSubject;

  public Proxy()
  {
   realSubject = new RealSubject();
  }

  /// <summary>
  ///    Subject     ,      RealSubject Function1()
  /// </summary>
  public void Function1()
  {
   realSubject.Function1();
  }

  /// <summary>
  ///    Subject     ,      RealSubject Function2()
  /// </summary>
  public void Function2()
  {
   realSubject.Function2();
  }
 }

3.2.4 클 라 이언 트 의 호출

 class Program
 {
  static void Main(string[] args)
  {
   //      
   ISubject subjectProxy = new Proxy();

   //           
   subjectProxy.Function1();
   subjectProxy.Function2();

   Console.Read();
  }
 }
3.2.5 운행 결과
//img.jbzj.com/file_images/article/201606/2016060111270328.png   
4.모델 총화
4.1 장점
4.1.1 클 라 이언 트 에 게 실제 대상 의 세부 사항 과 복잡성 을 숨 겼 다.
4.1.2 클 라 이언 트(호출 자)와 실제 대상 의 느슨 한 결합 을 실현 했다.
4.1.3 원 격 에이전트 로 인해 클 라 이언 트 가 원 격 기기 에 있 는 대상 을 방문 할 수 있 고 원 격 기 계 는 더욱 좋 은 성능 과 처리 속 도 를 가 질 수 있 으 며 클 라 이언 트 의 요청 에 신속하게 응답 하고 처리 할 수 있다.
4.1.4 가상 대 리 는 작은 대상 을 사용 하여 큰 대상 을 대표 하면 시스템 자원 의 소 모 를 줄 이 고 시스템 을 최적화 시 키 며 운행 속 도 를 높 일 수 있다.
4.1.5 안전 대 리 는 실제 대상 에 대한 사용 권한 을 제어 할 수 있다.
4.2 단점
4.2.1 대리 수 요 를 실현 하기 위해 방문 통제 층 을 추가 하기 위해 추가 작업 을 추가 했다.어떤 대 리 는 실현 하기 가 매우 복잡 하 다.
4.3 적용 필드
4.3.1 원 격 에이전트:서로 다른 주소 공간 에 있 는 대상 에 게 로 컬 에이 전 트 를 제공 합 니 다.
4.3.2 가상 에이전트:소모 가 많은 대상 을 만 들 려 면 소모 가 적은 대상 을 만 들 고 실제 대상 은 필요 할 때 만 진실 하 게 만 들 수 있다 는 것 을 나타 낸다.
4.3.3 안전 에이전트:실제 대상 에 대한 접근 권한 을 제어 하 는 데 사용 합 니 다.
4.3.4 스마트 가이드:실제 대상 을 호출 할 때 대리 가 추가 적 인 조작 을 제공한다.대상 이 조작 되 는 횟수 를 기록 하 는 등.
4.3.5 버퍼 에이전트:특정한 목표 작업 에 임시 저장 공간 을 제공 하여 더 많은 클 라 이언 트 가 이 결 과 를 공유 할 수 있 도록 합 니 다.
4.3.6 방화벽 대리:악성 사용자 가 접근 하지 않도록 보호 목표.
4.3.7 동기 화 에이전트:몇 명의 사용자 가 한 대상 을 동시에 사용 할 수 있 도록 충돌 하지 않 습 니 다.
5.예 를 들다
5.1 원 격 에이전트;.NET 의 WCF 원 격 에이전트
5.2 가상 에이전트;HTML 그림 불 러 오기
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기