プロキシ パターンは、別のオブジェクトへのアクセスを制御するためのプロキシまたはプレースホルダ オブジェクトを提供します。
Proxy オブジェクトは、そのオブジェクトを含むオブジェクトと同じ方法で使用されます。
Subject は、RealSubject と Proxy のパブリック インターフェイスを定義し、RealSubject が必要とするどこでも Proxy を使用できるようにします。使用。
RealSubject は、Proxy によって表される特定のオブジェクトを定義します。
プロキシは、実際のサブジェクトへの参照を維持し、そのサブジェクトへのアクセスを制御します。 RealSubject と同じインターフェイスを実装して、おそらく 2 つを交互に使用できるようにする必要があります。実際にオブジェクトの定義を変更せずに、既存のオブジェクトの動作を変更する必要がある場合、プロキシ パターンを使用するとそれが可能になります。さらに、これは、クラスを完全に実装せずにクラスの動作を複製する必要があるテスト シナリオでも役立ちます。
例
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 中国語 Web サイトの他の関連記事を参照してください。