Das Proxy-Muster stellt ein Proxy- oder Platzhalterobjekt bereit, um den Zugriff auf ein anderes Objekt zu steuern.
Proxy-Objekte werden auf die gleiche Weise verwendet wie ihre enthaltenden Objekte.
Subject definiert eine öffentliche Schnittstelle für RealSubject und Proxy, sodass Proxy überall dort verwendet werden kann, wo RealSubject es benötigt.
RealSubject definiert das spezifische Objekt, das vom Proxy dargestellt wird.
Der Proxy verwaltet einen Verweis auf das reale Subjekt und steuert den Zugriff darauf. Es muss dieselbe Schnittstelle wie RealSubject implementieren, damit die beiden möglicherweise austauschbar verwendet werden können. Wenn Sie jemals das Verhalten eines vorhandenen Objekts ändern mussten, ohne die Definition dieses Objekts tatsächlich zu ändern, können Sie genau das mit dem Proxy-Muster tun. Darüber hinaus ist dies in Testszenarien nützlich, in denen Sie möglicherweise das Verhalten einer Klasse replizieren müssen, ohne sie vollständig zu implementieren.
Beispiel
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; } }
Das obige ist der detaillierte Inhalt vonWas ist das Proxy-Entwurfsmuster und wie implementiert man es in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!