साझा साझा तरीके कहां से लाएं


9

मेरे पास तरीकों का एक गुच्छा है जो आमतौर पर हर जगह उपयोग किया जाता है। अभी कोडफाइल को ग्लोबल्स नाम दिया गया है, इस तथ्य का प्रतिनिधित्व करने के लिए कि वे ... वास्तव में ... वैश्विक हैं।

हालांकि, मुझे यह पसंद नहीं है।

मैं इन्हें एक वर्ग में समूहित करना चाहता हूं और एक इंटरफ़ेस पास करना चाहता हूं। मैं केवल एक उदाहरण देता हूँ, लेकिन मैं यहाँ सिंगलटन जाल में नहीं पड़ रहा हूँ।

सबसे पहले, मुझे कक्षा का नाम क्या देना चाहिए। मैं ग्लोबल्स नाम से बचना चाहता हूं क्योंकि मुझे डर है कि गलत विचार रखने वाले मिल जाएंगे।

इसके अलावा, मुझे ऐसे तरीकों के सेट को विभाजित करने पर कैसे विचार करना चाहिए ताकि व्यवहार बदल सके और अनुकूल हो सके?

तरीकों के सेट में सामान शामिल हैं:

  • रूपांतरण तालिका
  • क्लिपबोर्ड इंटरैक्शन
  • निर्मित फोंट का प्रबंधन
  • आम ड्राइंग के तरीके
  • अक्सर उपयोग किए गए संसाधनों तक पहुंच के साथ एक इंटरफ़ेस प्रदान करना

क्या ये शुद्ध उपयोग के तरीके हैं जो राज्य को नहीं बचाते हैं या वे राज्य को बचाते हैं?
TheLQ

सिंगलटन जाल में नहीं गिरने के लिए +1।
कालेब

@ TheLQ वे आवश्यक रूप से राज्य नहीं बचाएंगे, लेकिन वे सुविधा के लिए कॉन्स्टेंट डेटा (जैसे रूपांतरण चार्ट) धारण करेंगे।
ली लुईविरे

जवाबों:


4

नाम स्थान हो सकता है [application].Common.Shared

कक्षाओं का नाम दिया जा सकता है:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

मैं कक्षाएं तोड़ देता हूं क्योंकि ऐसा लगता है कि वे अलग-अलग चीजें करते हैं।


1

यदि आप एक उदाहरण बनाने जा रहे हैं, तो आपके पास एक बहुत कुछ है। इसके अलावा, बात यह है कि लोगों को आमतौर पर अगर वे एक सिंगलटन जाल के बारे में बात करते हैं, तो यह होगा कि एकल एकल वैश्विक हैं, और अधिकांश वर्ग वैश्विक नहीं होने से बेहतर हैं। तो आपके पास एक सिंगलटन भी हो सकता है। यदि आप उचित रूप से ऑब्जेक्ट के आसपास एक इंटरफ़ेस पास कर सकते हैं जो इसे कॉल करना चाहते हैं तो यह वास्तव में वैश्विक नहीं है।

इसके अलावा, इसे वैश्विक तरीकों के एक-बैग में रखने से व्यवहार में बदलाव और अनुकूलन करना मुश्किल हो जाता है क्योंकि न केवल प्रत्येक विधि में एक-एक बदलाव से एक नए उपवर्ग की आवश्यकता होती है, बल्कि परिवर्तनों के प्रत्येक संयोजन के लिए स्वयं उपवर्ग की आवश्यकता होगी।

मैं हर एक के लिए सिंगलटन होने की सलाह दूंगा जो वास्तव में वैश्विक है (मैं आपका शब्द ले लूंगा वे सभी हैं) और कुछ प्रकार की रजिस्ट्री या कारखाने जो आपको एक उदाहरण देते हैं (जिसका अर्थ है कि आप इंटरफ़ेस के बाद से सिंगलटन या नहीं के रूप में लागू कर सकते हैं) कोई वादा नहीं करता)। मैं उन्हें फोन करने वाले के नजरिए के आधार पर उनका नाम बताता।


1

मैं आम तौर पर इस प्रकार की चीजों को अपने स्वयं के असेंबली नामों में रखता हूं जैसे कि "foo.Common" किसी नेमस्पेस के अंतर्गत जैसे "foo.Common.Collections" या "foo.common.UI" आदि। फिर, मैं जो भी प्रोजेक्ट में विधानसभा का संदर्भ दे सकता हूं। मुझे उनकी जरूरत है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.