> 백엔드 개발 > C#.Net 튜토리얼 > 프록시 디자인 패턴은 무엇이며 C#에서 이를 구현하는 방법은 무엇입니까?

프록시 디자인 패턴은 무엇이며 C#에서 이를 구현하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-09-05 12:21:10
앞으로
1339명이 탐색했습니다.

什么是代理设计模式以及如何在 C# 中实现它?

프록시 패턴은 다른 개체에 대한 액세스를 제어하기 위해 프록시 또는 자리 표시자 개체를 제공합니다.

Proxy 개체는 포함 개체와 동일한 방식으로 사용됩니다.

Participants

Subject는 RealSubject가 필요할 때마다 Proxy를 사용할 수 있도록 RealSubject 및 Proxy에 대한 공개 인터페이스를 정의합니다.

RealSubject는 프록시가 나타내는 특정 개체를 정의합니다.

프록시는 실제 주제에 대한 참조를 유지하고 이에 대한 액세스를 제어합니다. RealSubject와 동일한 인터페이스를 구현해야 두 가지를 서로 바꿔서 사용할 수 있습니다

. 객체의 정의를 실제로 변경하지 않고 기존 객체의 동작을 변경해야 하는 경우 프록시 패턴을 사용하면 그렇게 할 수 있습니다. 또한 이는 클래스를 완전히 구현하지 않고 클래스의 동작을 복제해야 하는 테스트 시나리오에서 유용합니다.

internal class Program {
   private static void Main(string[] args) {

      NewServerProxy proxy = new NewServerProxy();
      Console.WriteLine("What would you like to order? ");
      string order = Console.ReadLine();
      proxy.TakeOrder(order);

      Console.WriteLine("Sure thing! Here's your " + proxy.DeliverOrder() + ".");
      Console.WriteLine("How would you like to pay?");
      string payment = Console.ReadLine();
      proxy.Processpayment(payment);

      Console.ReadKey();
   }
}

public interface IServerP {
   void TakeOrder(string order);
   string DeliverOrder();
   void Processpayment(string payment);
}
public class ServerP : IServerP {
   private string Order;
   public string DeliverOrder() {
      return Order;
   }

   public void Processpayment(string payment){
      Console.WriteLine("Server Processes the payment " + payment);
   }
   public void TakeOrder(string order) {
      Console.WriteLine("Server takes order " + order);
      Order = order;
   }
}
public class NewServerProxy : IServerP {
   private string Order;
   ServerP _server = new ServerP();
   public string DeliverOrder() {
      return Order;
   }
   public void Processpayment(string payment) {
      _server.Processpayment(payment);
   }
   public void TakeOrder(string order) {
      Console.WriteLine("Server takes order " + order);
      Order = order;
   }
}
로그인 후 복사

위 내용은 프록시 디자인 패턴은 무엇이며 C#에서 이를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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