কম্পিউটার

কিভাবে সি# এ আইডিসপোজেবল ডিজাইন প্যাটার্ন বাস্তবায়ন করবেন?


যখন আমাদের অব্যবস্থাপিত বস্তুর নিষ্পত্তি করার প্রয়োজন হয় তখন আমাদের একটি আইডিসপোজেবল ডিজাইন প্যাটার্ন (বা ডিসপোজ প্যাটার্ন) ব্যবহার করা উচিত।

আইডিসপোজেবল ডিজাইন প্যাটার্ন বাস্তবায়নের জন্য, যে শ্রেণীটি প্রত্যক্ষ বা পরোক্ষভাবে অব্যবস্থাপিত বস্তুর সাথে ডিল করে তাকে আইডিসপোজেবল ইন্টারফেস বাস্তবায়ন করতে হবে। এবং আইডিসপোজেবল ইন্টারফেসের ভিতরে ঘোষিত ডিসপোজ পদ্ধতিটি বাস্তবায়ন করতে হবে। আমরা সরাসরি অনিয়ন্ত্রিত বস্তুর সাথে ডিল করি না। কিন্তু আমরা পরিচালিত ক্লাস নিয়ে কাজ করি, যা সরাসরি অব্যবস্থাপিত বস্তুর সাথে ডিল করে। উদাহরণস্বরূপ, ফাইল হ্যান্ডলার, সংযোগ স্ট্রিং, HTTP স্ট্রীম, ইত্যাদি।

এই প্যাটার্নের গুরুত্বপূর্ণ দিক হল এটি উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসের জন্য আইডিসপোজেবল ডিজাইন প্যাটার্ন অনুসরণ করা সহজ করে তোলে। এবং এটি একটি ওভাররিডেবল ডিসপোজ পদ্ধতি বাস্তবায়নের কারণে। এই প্যাটার্নটি Finalizer পদ্ধতি (বা c# তে ধ্বংসকারী) ব্যবহারের পরামর্শ দেয়। যাইহোক, যদি আমরা ফাইনালিজার ব্যবহার করি, তাহলে এটির কার্যকারিতার প্রভাবের কারণে এটি সঠিকভাবে পরিচালনা করা উচিত।

উদাহরণ

static class Program {
   static void Main(string[] args) {
      using var serviceProxy = new ServiceProxy(null);
      serviceProxy.Get();
      serviceProxy.Post("");
      Console.ReadLine();
   }
}
public class ServiceProxy : System.IDisposable {
   private readonly HttpClient httpClient;
   private bool disposed;

   public ServiceProxy(IHttpClientFactory httpClientFactory) {
      httpClient = httpClientFactory.CreateClient();
   }
   ~ServiceProxy() {
      Dispose(false);
   }
   public void Dispose() {
      Dispose(true);
      GC.SuppressFinalize(this);
   }
   protected virtual void Dispose(bool disposing) {
      if (disposed) {
         return;
      }

      if (disposing) {
         // Dispose managed objects
         httpClient.Dispose();
      }
      // Dispose unmanaged objects
      disposed = true;
   }
   public void Get() {
      var response = httpClient.GetAsync("");
   }
   public void Post(string request) {
      var response = httpClient.PostAsync("", new StringContent(request));
   }
}

  1. কিভাবে Android TextInputLayout বাস্তবায়ন করবেন

  2. কিভাবে অ্যান্ড্রয়েড পুল-টু-রিফ্রেশ বাস্তবায়ন করবেন?

  3. C++ এ কম্পোজিট ডিজাইন প্যাটার্ন

  4. পাইথনে প্যাটার্ন কিভাবে প্রিন্ট করবেন?