एकल उत्तरदायित्व सिद्धांत और चिंता का पृथक्करण के बीच क्या अंतर है?एकल उत्तरदायित्व सिद्धांत और चिंता का पृथक्करण
उत्तर
एकल जिम्मेदारी सिद्धांत (SRP) - प्रत्येक वर्ग के सिर्फ एक परिवर्तन के कारण दे; और "बदलने का कारण" == "ज़िम्मेदारी"। उदाहरण में: चालान कक्षा में खुद को मुद्रित करने के लिए की ज़िम्मेदारी नहीं है।
चिंता का पृथक्करण (1 9 74 से)। चिंता == प्रणाली की सुविधा। प्रत्येक चिंताओं का ख्याल रखना: प्रत्येक एक चिंता के लिए, अन्य चिंताएं अप्रासंगिक हैं। व्यवहार के कार्यान्वयन को छुपाएं।
here से।
Separation of Concern vs Single Responsibility Principle (SoC vs SRP)
जुड़ा हुआ लेख से:
चिंताएं (SoC) का पृथक्करण - अलग विशेषताएं है कि संभव के रूप में छोटे रूप में कार्यक्षमता में ओवरलैप में एक कंप्यूटर प्रोग्राम तोड़ने की प्रक्रिया है। चिंता एक कार्यक्रम में रुचि या फोकस का कोई टुकड़ा है। आम तौर पर, चिंताओं विशेषताओं या व्यवहार के पर्याय हैं। http://en.wikipedia.org/wiki/Separation_of_concerns
एकल जिम्मेदारी सिद्धांत (SRP) - हर वस्तु एक भी जिम्मेदारी होनी चाहिए, और अपने सभी सेवाओं बाल बाल कि जिम्मेदारी के साथ गठबंधन किया जाना चाहिए। कुछ स्तर पर कोसियन को एसआरपी के पर्याय के रूप में माना जाता है। http://en.wikipedia.org/wiki/Single_responsibility_principle
इन परिभाषाओं के साथ, किस स्तर पर समेकन को एकल जिम्मेदारी सिद्धांत के पर्याय के रूप में माना जाता है? मैंने खोज की कि कई समेकन स्तर (निम्न से उच्च) हैं: संयोग, तार्किक, अस्थायी, प्रक्रियात्मक और functional..in यह स्पष्टीकरण यह केवल "कार्यात्मक संयोजन" का अर्थ है? – limonik
एकल उत्तरदायित्व बताती है कि एक वस्तु काम की एक इकाई के लिए जिम्मेदार है।
चिंता का पृथक्करण बताता है कि अनुप्रयोगों को मॉड्यूल में विभाजित किया जाना चाहिए जिनकी कार्यक्षमता जितनी कम हो सके ओवरलैप हो।
इसी तरह के अंतिम परिणाम ... थोड़ा अलग अनुप्रयोग।
ऑब्जेक्ट और मॉड्यूल के बीच क्या अंतर है? मेरे लिए एक मॉड्यूल एक वर्ग है और एक वस्तु वर्ग है या कक्षा – Rookian
का एक उदाहरण एक मॉड्यूल एक अनुप्रयोग में समान कार्यक्षमता का एक पूरा टुकड़ा हो सकता है ... कई वर्गों के बीच बातचीत से बना है (प्रत्येक वर्ग में एक ही जिम्मेदारी है यदि आप एकल जिम्मेदारी पटर का पालन कर रहे हैं)। –
मेरी राय में एकल उत्तरदायित्व सिद्धांत चिंता के पृथक्करण को प्राप्त करने के लिए उपकरण/मुहावरों में से एक है।
क्या? कोई आसानी से एक ऐसा एप्लिकेशन बना सकता है जिसमें गैर-ओवरलैपिंग कार्यक्षमता (एसआरपी) हो जिसमें कई ऑब्जेक्ट्स हों जो अलग-अलग चिंताओं (! एसओसी) हों। –
लेकिन ऐसी ऑब्जेक्ट को इमेज करना बहुत मुश्किल है जिसमें कई जिम्मेदारियां हैं और फिर भी चिंताओं के सिद्धांत को अलग करने का पालन करती हैं। दूसरे शब्दों में चिंताओं के वास्तविक अलगाव को प्राप्त करने के लिए (सभी स्तरों पर) एक बेहतर जिम्मेदारी सिद्धांत का पालन करें – BostonLogan
चिंता का पृथक्करण एक प्रक्रिया है; एकल जिम्मेदारी सिद्धांत एक डिजाइन/वास्तुकला दर्शन है। वे पूरी तरह से विवाद नहीं कर रहे हैं, लेकिन वे विभिन्न उद्देश्यों की सेवा करते हैं।
इसी प्रकार, लेकिन एसओसी चिंताओं से संबंधित है: कई चिंताओं में जटिल समस्या को तोड़ने के लिए, एसआरपी सिर्फ एक जिम्मेदारी है।
एकल जिम्मेदारी सिद्धांत और चिंता का पृथक्करण वास्तव में वही बात है।
निश्चित रूप से आप दोनों के बीच किसी प्रकार के अंतर को छेड़छाड़ करने की कोशिश कर रहे अकादमिक चर्चा में फंस गए हैं, लेकिन क्यों? सभी उद्देश्यों और उद्देश्यों के लिए वे एक ही चीज़ का वर्णन करते हैं। सबसे बड़ी समस्या यह है कि लोग यह जानना चाहते हैं कि वास्तव में "चिंता" और "ज़िम्मेदारी" क्या है, कि वे शायद एसआरपी और एसओसी के पीछे महत्वपूर्ण विचार याद करते हैं।
यह विचार बस आपके कोडबेस को ढीले युग्मित पृथक भागों में विभाजित करने के लिए है। यह कई डेवलपर्स को एक-दूसरे को प्रभावित किए बिना विभिन्न हिस्सों पर काम करने की अनुमति देता है, यह एक एकल डेवलपर को किसी अन्य को तोड़ने के बिना एक अलग भाग को संशोधित करने की अनुमति देता है।
यह मॉड्यूल स्तर पर लागू होता है, उदाहरण के लिए एमवीसी एसआरपी और एसओसी को बढ़ावा देने वाला एक वास्तुशिल्प पैटर्न है। कोडेबेस को अलग मॉडल, विचार और नियंत्रकों में विभाजित किया जाता है। इस तरह एक दृश्य के संशोधन को मॉडल के स्वतंत्र रूप से किया जा सकता है। दो दो भयभीत रूप से intertwined नहीं हैं।
निचले स्तर पर इसे कक्षाओं में भी लागू किया जाना चाहिए। एक वर्ग में दर्जनों तरीकों को डालने के बजाय, कोड को कई में विभाजित करें। इसी कारण से।
इसके अलावा एक विधि स्तर पर, छोटी विधियों को बड़े तरीकों से विभाजित करें।
सिद्धांत रूप में। एसआरपी एक सिद्धांत है, नियम नहीं है, इसलिए आपको इसे चरम पर धार्मिक रूप से पालन करने (पढ़ना: नहीं कर सकता/नहीं) करना है। इसका मतलब यह नहीं है कि बहुत दूर जा रहा है और उदाहरण के लिए प्रत्येक वर्ग में केवल एक सात लाइन विधि है। इसका मतलब अलग-अलग हिस्सों में कोड को विभाजित करने का एक सामान्य सिद्धांत है। मुद्दा यह है कि यह एक बेहतर कोडबेस और अधिक स्थिर सॉफ्टवेयर का नेतृत्व करेगा।
एसआरपी और एसओसी विभिन्न स्तर पर अमूर्तता पर काम करते हैं। युग्मन को कम करने और एकजुटता को मजबूत करने के लिए दोनों मामलों में उद्देश्य है। जबकि एसआरपी किसी ऑब्जेक्ट स्तर पर अधिक काम करता है, एसओसी कार्य स्तर के कार्यान्वयन पर भी काम कर सकता है। एक कार्य एक वस्तु द्वारा लागू किया जा सकता है लेकिन कई वस्तुओं द्वारा भी। इसलिए युग्मन और दोनों सिद्धांतों का एकीकरण भिन्न हो सकता है।
चिंताओं का पृथक्करण (एसओसी)। अपनी एप्लिकेशन को यथासंभव कार्यक्षमता में थोड़ा ओवरलैप के साथ अलग-अलग विशेषताओं में विभाजित करें। (Microsoft)।
"चिंता" = "अलग विशेषता" = "अलग अनुभाग"
"चिंता" उच्च और निम्न दोनों स्तरों पर काम करता
एकल जिम्मेदारी सिद्धांत कहा गया है कि हर मॉड्यूल या वर्ग सॉफ़्टवेयर द्वारा प्रदान की गई कार्यक्षमता के एक हिस्से पर ज़िम्मेदारी होनी चाहिए, और वह जिम्मेदारी कक्षा द्वारा पूरी तरह से समाहित की जानी चाहिए। इसकी सभी सेवाओं को उस जिम्मेदारी के साथ संकीर्ण रूप से गठबंधन किया जाना चाहिए। (विकिपीडिया परिभाषा)
"उत्तरदायित्व" = "बदलने का कारण" क्या बदलता है? "सॉफ्टवेयर द्वारा प्रदान की कार्यक्षमता के किसी एक भाग" = बुनियादी इकाई
निष्कर्ष
एकल जिम्मेदारी सिद्धांत बुनियादी इकाइयों पर काम करता है -> निम्न स्तर
पृथक्करण पर काम करता है चिंताएं उच्च और निम्न दोनों स्तरों पर काम करती हैं
एसआरपी और एसओसी अलग-अलग के लिए मिलकर काम करते हैं चिंताओं परवे
निम्न स्तर पर ठीक उसी
एसआरपी विभिन्न स्तरों पर भी काम करता है, आपके पास लाइब्रेरी स्तर पर अधिक सामान्य उत्तरदायित्व है, कि कक्षा स्तर पर और अधिक विशिष्ट एक कार्य स्तर – Phil1970
मैं चिंताओं (SoC) का पृथक्करण और एकल जिम्मेदारी सिद्धांत (SRP) के बीच तुलना आकर्षित करने के लिए करने की कोशिश की है।
मतभेद
SRP श्रेणी स्तर पर है, लेकिन SoC प्रत्येक कंप्यूटर प्रोग्राम, अमूर्त ... या कभी कभी वास्तु स्तर में है।
एसआरपी आपके डोमेन को समेकित कक्षाओं में विभाजित करने की गुणवत्ता (कैसे नहीं) की गुणवत्ता के बारे में है, जिसमें केवल एक जिम्मेदारी है (बदलने का एक कारण)। दूसरी तरफ, एसओसी एक संदर्भ को अलग-अलग वर्गों में अलग करने के लिए एक सिद्धांत सिद्धांत है, जैसे कि प्रत्येक खंड एक अलग चिंता को संबोधित करता है (क्या नहीं), क्योंकि बहुत सारे उपकरण हैं (उदाहरण के लिए कक्षाएं, कार्य, मॉड्यूल, पैकेज,। ..) इस लक्ष्य तक विभिन्न स्तर तक पहुंचने के लिए।
एसआरपी की अवधारणा एकजुटता (उच्च समेकन) पर आधारित है, जबकि एसओसी आण्विकता, विभाजन और जीत (डी सी) के करीब है, ... प्रत्येक स्तर के अमूर्तता में।
एसओसी जटिलता का सामना करने के लिए एक अच्छा डिजाइन सिद्धांत है, जैसे कि अमूर्तता, जबकि एकल जिम्मेदार कक्षाओं तक पहुंचने के लिए आप एसओसी सिद्धांत को एक महान समाधान के रूप में उपयोग कर सकते हैं। जैसा कि, यह जानने का एक तरीका है कि एक वर्ग में एक से अधिक ज़िम्मेदारी है यदि आप उस वर्ग से दूसरी ज़िम्मेदारी (चिंता) निकाल सकते हैं।
समानताएँ
- इन सिद्धांतों में से प्रत्येक को लागू करने के बाद, अपने संदर्भ, है, और अधिक पुन: प्रयोज्य पोषणीय, मजबूत, पठनीय हो जाता है ...।
- 1. Asp.Net एमवीसी क्रियाएं - चिंता का एकीकरण/एकल उत्तरदायित्व सिद्धांत
- 2. एमवीसी - चिंता का पृथक्करण
- 3. एकल उत्तरदायित्व सिद्धांत को समझने में सहायता
- 4. एकल उत्तरदायित्व और निर्भरता
- 5. एकल उत्तरदायित्व और मिक्सिन
- 6. "असली दुनिया" में एकल उत्तरदायित्व सिद्धांत का उपयोग
- 7. क्लोजर एप्रोच चिंता का पृथक्करण कैसे करता है?
- 8. क्या अकेले उत्तरदायित्व सिद्धांत ओओपी का नियम है?
- 9. क्या एक "समृद्ध डोमेन मॉडल" एकल उत्तरदायित्व सिद्धांत का उल्लंघन कर सकता है?
- 10. "एकल उत्तरदायित्व सिद्धांत" का उपयोग करके मेरे कंटेनरों को सार्वजनिक सेटर्स
- 11. इंटरफ़ेस पृथक्करण सिद्धांत- एक इंटरफ़ेस पर प्रोग्राम
- 12. एमवीसी नियंत्रकों में कमांड-क्वेरी पृथक्करण सिद्धांत का उपयोग
- 13. एक सेवा वर्ग के लिए एकल उत्तरदायित्व सिद्धांत कैसे लागू करें
- 14. जानकारी विशेषज्ञ नहीं हैं/बताएं एकल उत्तरदायित्व सिद्धांत के साथ बाधाओं पर मत पूछें?
- 15. एनीमिक डोमेन मॉडल से कैसे बचें और चिंता का पृथक्करण कैसे बनाए रखें?
- 16. कई इंटरफेस का उल्लंघन एकल जिम्मेदारी सिद्धांत
- 17. क्या अकेले उत्तरदायित्व सिद्धांत का पालन करना encapsulation का उल्लंघन करता है?
- 18. इंटरफ़ेस पृथक्करण सिद्धांत के पीछे तर्क क्या है?
- 19. खेल का पृथक्करण और तर्क प्रस्तुत करना
- 20. सीएसएस - रंग का पृथक्करण और स्थिति
- 21. CLLocationManager उत्तरदायित्व
- 22. पृथक्करण और पैटर्न मिलान तकनीक
- 23. सिद्धांत 2 - एकल तालिका भाग - बच्चे इकाई
- 24. सभी अलग-अलग पृथक्करण
- 25. सत्यापन के लिए एकल जिम्मेदारी सिद्धांत का क्या अर्थ है
- 26. एमवीवीएम में व्यूमोडेल कैसे बनाया जाए, एकल जिम्मेदारी सिद्धांत का उल्लंघन न करें?
- 27. सर्वश्रेष्ठ सिद्धांतों का सिद्धांत
- 28. रेल ActiveSuppport: चिंता और निजी तरीके
- 29. सिद्धांत 2 एकल हटाए गए इकाई को फ्लश करें
- 30. node.js से संबंधित चिंता
यह एक डुप्ली होना चाहिए। प्रत्येक के लिए खोजें और जवाब पढ़ें। वे बहुत जुड़े हुए हैं और अक्सर एक साथ चर्चा करते हैं। –
मुझे कोई डुप्ली दिखाई नहीं दे रहा है - क्या आपके मन में कोई है? यदि आप एक पा सकते हैं तो मुझे बंद करने के लिए वोट करने में खुशी होगी। –
मुझे यह प्रतीत नहीं होता है, लेकिन मैंने सोचा कि कुछ महीने पहले इस तरह के कुछ जवाब दिए गए थे। कुछ अच्छे उत्तर आ रहे हैं, और कोई भी डुप्लीस नहीं ढूंढ रहा है, तो शायद मैं सिर्फ पागल हूं। –