কম্পিউটার

প্রক্সি ডিজাইন প্যাটার্ন কি এবং কিভাবে এটি C# এ প্রয়োগ করা যায়?


প্রক্সি প্যাটার্ন অন্য, ভিন্ন বস্তুর অ্যাক্সেস নিয়ন্ত্রণ করতে একটি সারোগেট বা স্থানধারক বস্তু প্রদান করে।

প্রক্সি অবজেক্টটি তার ধারণ করা বস্তুর মতো একই পদ্ধতিতে ব্যবহার করা যেতে পারে

অংশগ্রহণকারীরা

সাবজেক্টটি RealSubject এবং Proxy-এর জন্য একটি সাধারণ ইন্টারফেস সংজ্ঞায়িত করে যাতে RealSubject প্রত্যাশিত যে কোন জায়গায় প্রক্সি ব্যবহার করা যেতে পারে।

RealSubject কংক্রিট বস্তুকে সংজ্ঞায়িত করে যা প্রক্সি প্রতিনিধিত্ব করে।

প্রক্সি RealSubject-এর একটি রেফারেন্স বজায় রাখে এবং এটিতে অ্যাক্সেস নিয়ন্ত্রণ করে। এটিকে অবশ্যই 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;
   }
}

  1. "পেইন্ট 3D" কী এবং এটি কীভাবে ব্যবহার করা হয়?

  2. কিভাবে C# এ একটি তালিকা ঘোষণা এবং শুরু করবেন?

  3. জাভা 9-এ JShell-এ স্ট্রিং ইউটিলিটি এবং অপরিবর্তনীয়তা কীভাবে বাস্তবায়ন করবেন?

  4. কীভাবে টুইটার এবং ফেসবুক পোস্টগুলি কালানুক্রমিক ক্রমে দেখতে হয়