एकल उत्तरदायित्व सिद्धांत कहता है कि "एक वर्ग में परिवर्तन का एक कारण होना चाहिए"।
एमवीसी पैटर्न में, कंट्रोलर का काम व्यू और मॉडल के बीच मध्यस्थता करना है। यह GUI पर उपयोगकर्ता द्वारा किए गए कार्यों की रिपोर्ट करने के लिए दृश्य के लिए एक इंटरफ़ेस प्रदान करता है (जैसे कि दृश्य को कॉल करने की अनुमति देता है controller.specificButtonPressed()
), और यह डेटा को हेरफेर करने के लिए मॉडल पर उपयुक्त तरीकों को कॉल करने में सक्षम है या इसे संचालित करने के लिए आमंत्रित करता है (जैसे model.doSomething()
) ।
इस का मतलब है कि:
- उपयोगकर्ता कार्यों को रिपोर्ट करने के लिए एक उपयुक्त इंटरफ़ेस देखें की पेशकश करने के लिए नियंत्रक को GUI के बारे में जानना आवश्यक है।
- मॉडल में तर्क के बारे में भी जानना आवश्यक है, ताकि मॉडल पर उपयुक्त विधियों का आह्वान किया जा सके।
इसका अर्थ है कि परिवर्तन के दो कारण हैं : GUI में परिवर्तन, और buisness लॉजिक में परिवर्तन।
यदि GUI बदल जाता है, उदाहरण के लिए एक नया बटन जोड़ा जाता है, तो नियंत्रक को इस बटन पर उपयोगकर्ता प्रेस को रिपोर्ट करने की अनुमति देने के लिए एक नई विधि जोड़ने की आवश्यकता हो सकती है।
और अगर मॉडल में व्यावसायिक तर्क बदलता है, तो नियंत्रक को मॉडल पर सही तरीकों को लागू करने के लिए बदलना पड़ सकता है।
इसलिए, नियंत्रक के पास बदलने के दो संभावित कारण हैं । क्या यह एसआरपी को तोड़ता है?