Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

सी # में आईडीस्पोजेबल डिजाइन पैटर्न को कैसे कार्यान्वित करें?

जब हमें अप्रबंधित वस्तुओं को निपटाने की आवश्यकता होती है, तो हमें एक आईडीस्पोजेबल डिज़ाइन पैटर्न (या डिस्पोज़ पैटर्न) का उपयोग करना चाहिए।

IDisposable डिज़ाइन पैटर्न को लागू करने के लिए, जो वर्ग अप्रबंधित वस्तुओं से प्रत्यक्ष या अप्रत्यक्ष रूप से संबंधित है, उन्हें IDisposable इंटरफ़ेस लागू करना चाहिए। और IDisposable इंटरफ़ेस के अंदर घोषित विधि को लागू करें। हम अप्रबंधित वस्तुओं के साथ सीधे व्यवहार नहीं करते हैं। लेकिन हम प्रबंधित वर्गों से निपटते हैं, जो सीधे अप्रबंधित वस्तुओं से संबंधित हैं। उदाहरण के लिए, फ़ाइल हैंडलर, कनेक्शन स्ट्रिंग, HTTP स्ट्रीम आदि।

इस पैटर्न का महत्वपूर्ण पहलू यह है कि यह विरासत में मिली कक्षाओं के लिए IDisposable डिज़ाइन पैटर्न का पालन करना आसान बनाता है। और यह एक अत्यधिक निपटान विधि के कार्यान्वयन के कारण है। यह पैटर्न फ़ाइनलाइज़र विधि (या सी # में विनाशक) के उपयोग का भी सुझाव देता है। हालांकि, अगर हम फ़ाइनलाइज़र का उपयोग करते हैं, तो इसके प्रदर्शन प्रभावों के कारण इसे ठीक से प्रबंधित किया जाना चाहिए।

उदाहरण

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. एंड्रॉइड पुल-टू-रीफ्रेश कैसे कार्यान्वित करें?

    उदाहरण में आने से पहले, हमें पता होना चाहिए कि एंड्रॉइड में लेआउट रीफ्रेश करने के लिए पुल क्या है। हम एंड्रॉइड में रीफ्रेश करने के लिए पुल को स्वाइप-टू-रीफ्रेश के रूप में कॉल कर सकते हैं। जब आप स्क्रीन को ऊपर से नीचे स्वाइप करते हैं तो यह setOnRefreshListener के आधार पर कुछ क्रिया करेगा। यह उदाहरण

  1. C++ . में समग्र डिजाइन पैटर्न

    समग्र पैटर्न का उपयोग किया जाता है जहां हमें वस्तुओं के समूह को एक ही वस्तु के समान व्यवहार करने की आवश्यकता होती है। समग्र पैटर्न भाग के साथ-साथ संपूर्ण पदानुक्रम का प्रतिनिधित्व करने के लिए एक वृक्ष संरचना की अवधि में वस्तुओं की रचना करता है। इस प्रकार का डिज़ाइन पैटर्न संरचनात्मक पैटर्न के अंतर्ग

  1. पायथन में पैटर्न कैसे प्रिंट करें?

    नेस्टेड फॉर लूप्स का उपयोग करके पायथन में पैटर्न मुद्रित किए जा सकते हैं। बाहरी लूप का उपयोग पंक्तियों की संख्या के माध्यम से पुनरावृति करने के लिए किया जाता है जबकि आंतरिक लूप का उपयोग स्तंभों की संख्या को संभालने के लिए किया जाता है। आवश्यकता के अनुसार विभिन्न पैटर्न बनाने के लिए प्रिंट स्टेटमेंट