Maison >développement back-end >Tutoriel C#.Net >Qu'est-ce que le modèle de conception de proxy et comment l'implémenter en C# ?

Qu'est-ce que le modèle de conception de proxy et comment l'implémenter en C# ?

WBOY
WBOYavant
2023-09-05 12:21:101309parcourir

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

Le modèle de proxy fournit un objet proxy ou espace réservé pour contrôler l'accès à un objet différent.

Les objets Proxy sont utilisés de la même manière que les objets qu'ils contiennent

Participants

Subject définit une interface publique pour RealSubject et Proxy afin que Proxy puisse être utilisé partout où RealSubject en a besoin.

RealSubject définit l'objet spécifique représenté par le proxy

Le proxy maintient une référence au sujet réel et en contrôle l'accès. Il doit implémenter la même interface que RealSubject afin que les deux puissent être utilisés de manière interchangeable

éventuellement. Si vous avez déjà eu besoin de modifier le comportement d'un objet existant sans réellement modifier la définition de cet objet, le modèle de proxy vous permet de le faire. De plus, cela est utile dans les scénarios de test dans lesquels vous devrez peut-être reproduire le comportement d'une classe sans l'implémenter complètement.

Exemple

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;
   }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer