代理模式提供代理或占位符对象来控制对另一个不同对象的访问。
代理对象的使用方式与其包含对象相同
参与者
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# 中实现它?的详细内容,更多请关注编程之家其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。