代理模式提供代理程式或占位符物件來控制對另一個不同物件的存取。
代理物件的使用方式與其包含物件相同
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中文網其他相關文章!