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

WBOY
发布: 2023-09-05 12:21:10
转载
1305 人浏览过

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

代理模式提供代理或占位符对象来控制对另一个不同对象的访问。

代理对象的使用方式与其包含对象相同

参与者

Subject为RealSubject和Proxy定义了一个公共接口,这样Proxy就可以在RealSubject需要的任何地方使用。

RealSubject定义了Proxy代表的具体对象.

代理维护对真实主题的引用并控制对其的访问。它必须实现与 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板