मैं एक सर्वर चला रहा हूं जिसे अवसर पर क्लाइंट प्रश्नों को खोजना है। मैं रिकॉर्ड्स के लिए डिस्क पर क्लाइंट क्वेरी लिखना चाहता हूं, लेकिन मैं अब खोज से धीमा नहीं करना चाहता हूं। (खोज पहले से ही बाधा है ...)सिंगलटन डिज़ाइन पैटर्न का उचित उपयोग करके
तो, जब ग्राहक खोज करता है, तो मेरे पास क्लाइंट का धागा एक सिंगलटन थ्रेड को एक संदेश भेजता है, जो डिस्क लिखने को संभालेगा, जबकि क्लाइंट थ्रेड ग्राहक के अनुरोधों को संभालने के लिए जारी है। इस तरह, डिस्क पर फ़ाइल सिंक समस्याओं में नहीं चलती है, और यह क्लाइंट अनुभव को धीमा नहीं करती है।
मेरे यहां एक वैचारिक प्रश्न है: क्या इस मामले में सिंगलटन उपयुक्त है? मैं अपने हालिया प्रोग्रामिंग में सिंगलटन डिज़ाइन पैटर्न का थोड़ा अधिक उपयोग कर रहा हूं, और मैं यह सुनिश्चित करना चाहता हूं कि मैं इसे अपने इच्छित उपयोग के लिए उपयोग कर रहा हूं।
किसी भी प्रतिक्रिया की बहुत सराहना की जाती है।
अपने संपूर्ण वास्तुकला को देखे बिना इस प्रश्न का उत्तर देना मुश्किल है। सिंगलटन पैटर्न में कमी आई है (यूनिट-परीक्षण कठिनाइयों आदि का कारण बनता है), यह निर्धारित करने के लिए आप पर निर्भर हैं कि वे प्रासंगिक हैं या नहीं ... –
त्वरित प्रतिक्रिया ओली के लिए धन्यवाद; मैंने यूनिट-परीक्षण कठिनाइयों के बारे में पढ़ा है लेकिन समग्र प्रभावों को समझ में नहीं आया है। इस तरह के महत्व की वैश्विक स्थिति से परहेज क्यों कर रहा है? उदाहरण के लिए, यदि डिस्क पर केवल एक फ़ाइल है जो एक प्रोग्राम लिखता है, तो क्या कोई यह सुनिश्चित नहीं करना चाहता कि इसे अलग-अलग हिस्सों में एक ही समय में एक्सेस नहीं किया जा सके? – Sal
वैश्विक स्थिति का अस्तित्व निर्भरताओं को इंजेक्ट करना मुश्किल बना सकता है (यह [नकली परीक्षण] का आधार है (http://en.wikipedia.org/wiki/Mock_object))। अधिक जानकारी के लिए इस बात को देखें: http://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html। –