मेरे पास क्लाइंट पंजीकरण के लिए एक इंटरफ़ेस है जिसे IRegistrationService कहा जाता है। इसमें पंजीकरण नामक एक विधि शामिल है और इसे कक्षा पंजीकरण सेवा के माध्यम से कार्यान्वित किया जाता है। अगर मैं डिलीट, अपडेट, उदाहरण के लिए पुनर्प्राप्त करने के तरीकों के बारे में चाहता हूं, तो क्या मैं प्रत्येक क्रिया के लिए एक अलग इंटरफ़ेस बनाउंगा जैसे IDeletionService, IUpdateService, IRetrieveService या केवल सभी विधियों को IRegistrationService में डाल दें। कारण मैं यह पूछता हूं क्योंकि यही वह सिद्धांत है जो विशेष रूप से एसआरपी सिद्धांत पूछता है।सोलिड सिद्धांतों का पालन करने की कोशिश करते समय मुझे अपने वर्ग के डिजाइन के साथ कितना दानेदार मिलता है?
उत्तर
एकल जिम्मेदारी सिद्धांत बताते हुए एक तरीका यह है कि एक वर्ग में बदलने का केवल एक कारण होना चाहिए। इसका जरूरी अर्थ यह नहीं है कि यह केवल एक चीज करता है, बल्कि यह केवल जिम्मेदारी के एक क्षेत्र से संबंधित है।
तो पंजीकरण के लिए लोगों के बारे में सभी को जानना ठीक है, और इसमें पंजीकरण को पुनर्प्राप्त करने, अद्यतन करने, पुनर्प्राप्त करने में शामिल होना शामिल है। यदि पंजीकरण प्रक्रिया में परिवर्तन की प्रक्रिया बदलती है (उदाहरण के लिए आप तय करते हैं कि सभी नए या अपडेट किए गए उपयोगकर्ताओं को ईमेल भेजा गया है)। हालांकि, पंजीकरण ईमेल कैसे भेजा जाता है, इसके कार्यान्वयन विवरण इस सेवा में शामिल नहीं हैं - यह दूसरा कारण होगा कि वर्ग बदल सकता है (उदाहरण के लिए आप महसूस करते हैं कि आप स्थानीय रूप से या बाहरी रूप से बाहरी एसएमटीपी सर्वर के माध्यम से ईमेल भेजना चाहते हैं ईमेल के बजाय एसएमएस, आदि)।
- 1. सोलिड सिद्धांतों को लागू करने के लिए पैटर्न
- 2. कार्यात्मक प्रोग्रामिंग के लिए सोलिड
- 3. HttpListener का उपयोग करने का प्रयास करते समय मुझे "AccessDenied" क्यों मिलता है?
- 4. स्ट्रिंग को नल के साथ तुलना करते समय मुझे NullPointerException क्यों मिलता है?
- 5. लिंक का पालन करते समय कैचिंग ईवेंट
- 6. रिपोजिटरी पैटर्न का उपयोग करते समय मुझे अपने भंडार विधियों को कितना तर्क देना चाहिए?
- 7. मल्टीप्रोसेसिंग के साथ प्रक्रियाओं की संख्या चुनते समय पालन करने के लिए कोई दिशानिर्देश हैं?
- 8. मुझे _ के साथ विधि नाम का पालन करने की आवश्यकता क्यों है?
- 9. क्या कोई स्थिर विश्लेषण उपकरण है जो रिपोर्ट करेगा कि SOLID सिद्धांतों का कितनी बारीकी से पालन किया जाता है?
- 10. आप टीडीडी के साथ जटिल सिस्टम कैसे डिजाइन करते हैं?
- 11. टेक्स्टस्विचर के लिए setCurrentText या setText का उपयोग करते समय मुझे NullPointerException क्यों मिलता है?
- 12. सोलिड और उपयोगकर्ता इंटरफ़ेस?
- 13. मुझे वसंत पहलू प्रोग्रामिंग पर जावाब्रेन ट्यूटोरियल का पालन करते समय निम्नलिखित अपवाद मिल रहा है:
- 14. पैटर्न SyntaxException} द्वारा विभाजित करने की कोशिश करते समय, {
- 15. एफ #, मान्य तर्कों की जांच करते समय कितना उचित है?
- 16. PHP में, class_alias का उपयोग करते समय आपको अलियोजित वर्ग कैसे मिलता है?
- 17. सर्वश्रेष्ठ सिद्धांतों का सिद्धांत
- 18. इस कोड को संकलित करने का प्रयास करते समय मुझे त्रुटि "त्रुटि: अज्ञात प्रकार का नाम 'आभासी' क्यों मिलता है?
- 19. ग्रेडल के साथ गुणों का विस्तार करते समय मुझे चींटी व्यवहार कैसे प्राप्त हो सकता है?
- 20. लोकोमोटिव संपादक किसी मॉडल की प्रविष्टियों पर लूप करने की कोशिश करते समय 'NoMethodError' फेंकता है
- 21. क्या बीडीडी का उपयोग करते समय खुले/बंद सिद्धांत का पालन करने के कोई लाभ हैं?
- 22. डंप_बीटी अपाचे कोर डंप का विश्लेषण करने की कोशिश करते समय काम नहीं कर रहा है
- 23. LINQ का उपयोग करते समय डेटाबेस प्रदर्शन ओवरहेड कितना है?
- 24. माइक्रोसॉफ्ट सीआरएम से कनेक्ट करने के लिए पाइथन सूड का उपयोग करते समय मुझे कनेक्शन त्रुटि/टाइमआउट क्यों मिलता है?
- 25. उचित वर्ग डिजाइन
- 26. share_ptr बनाने की कोशिश करते समय std :: make_shared() में त्रुटियां?
- 27. क्या मुझे loadNibNamed: विधि का उपयोग करते समय IBOutlets को रिलीज़ करने की आवश्यकता है?
- 28. मुझे itertools.product के साथ मेमोरी एरर क्यों मिलता है?
- 29. सी ++ पायथन के सिद्धांतों के बराबर है?
- 30. अद्यतन करने के बाद मुझे लाल विस्मयादिबोधक क्यों मिलता है?
तो आपके उत्तर को छोड़कर, पंजीकरण रजिस्टर उपयोगकर्ता, DeleteUser, UpdateUser विधियों को समाहित करता है, लेकिन अगर मैं ईमेल या एसएमएस के माध्यम से उपयोगकर्ताओं को अधिसूचनाएं भेजना चाहता हूं, तो शायद मेरे पास एक और कक्षा होनी चाहिए जिसे उपयोगकर्ता नोटिफिकेशन की तरह कुछ कहा जाता है जो संदेश को संभालता है। क्या मैंने आपको सही ढंग से समझा? एक बात जो आपने कहा वह अभी भी मुझे फेंक देता है कि वर्ग एक काम नहीं करता है, यह जिम्मेदारी के क्षेत्र से संबंधित है। क्षेत्र से आपका क्या मतलब है? आपके पास कोई उदाहरण है? धन्यवाद – Xaisoft
अधिकांश सोलिड सिद्धांत बहुत ठोस हैं, लेकिन एसआरपी कुछ हद तक व्यक्तिपरक है। सक्षम डेवलपर्स की राय अलग-अलग जिम्मेदारियों के आधार पर भिन्न हो सकती है, या जैसे ही जैकबैम ने इसे जिम्मेदारी का "क्षेत्र" रखा है। उस ने कहा, मुझे विश्वास है कि आपकी समझ उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नोटेशन उदाहरण के आधार पर सही है। शायद एसआरपी को इसका स्पष्ट उल्लंघन करने के बारे में सोचकर सबसे अच्छा समझाया जा सकता है: एक वर्ग जो ग्राहकों को पंजीकृत करने के तरीकों को प्रदान करता है, उनकी बंधक ब्याज की गणना करता है, और अगर उन्हें भुगतान करने में देर हो जाती है तो उन्हें सूचित करें कि कई जिम्मेदारियां होंगी। –
सहमत हैं कि जिम्मेदारी के क्षेत्र को परिभाषित करना मुश्किल हो सकता है। और सहमति व्यक्त की कि उपयोगकर्ता अधिसूचना एक अलग वर्ग होगी। इसके बारे में सोचने का एक तरीका यह है कि एक वर्ग को कैसे काम करना चाहिए, यह पता लगाने के दौरान आपके पास वार्तालाप के प्रकार के बारे में सोचना होगा। पंजीकरण प्रक्रिया में बदलावों के बारे में सोचने के लिए आपके पास एक प्रकार की वार्तालाप (शायद आपके ग्राहक के साथ), और किसी अन्य व्यक्ति के साथ एक अलग बातचीत के बारे में सोचने के लिए, कहें, पंजीकरण करने के दौरान कनेक्ट करने के लिए किस डेटाबेस ड्राइवर का उपयोग करना है। एक वर्ग को उन दोनों चीजों के बारे में नहीं पता होना चाहिए। –