
代理模式提供代理或占位符对象来控制对另一个不同对象的访问。
代理对象的使用方式与其包含对象相同
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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号