मैं मॉडल को डेटा एक्सेस लेयर के रूप में पेश करने के खिलाफ सावधानी बरतता हूं। यह oversimplifying है, और इसके परिणामस्वरूप आप नियंत्रक परत में बहुत अधिक कोड डालते हैं। यह बेहतर है कि यदि आप मॉडल में उस कोड को अधिक डालते हैं, और डेटाबेस दृढ़ता मॉडल के आंतरिक कोड का केवल एक हिस्सा बनाते हैं। मैं इस तरह MVC के बारे में सोचना चाहते:
- नियंत्रक: इनपुट संभाल, जो निर्धारित मॉडल और जो दृश्य का दृष्टांत को
- दृश्य: आवेदन डेटा की प्रस्तुति
- मॉडल: आवेदन के लिए अन्य सभी तर्क, सहित लेकिन डीएएल
यह मूल रूप से Page Controller पैटर्न तक सीमित नहीं है।
इसके बारे में सोचने का एक और तरीका यह है: मान लीजिए कि आपको अपने वेब ऐप को किसी अन्य प्लेटफॉर्म पर पोर्ट करना होगा, जैसे कमांड लाइन ऐप या डेस्कटॉप जीयूआई ऐप। आवेदन तर्क के किस हिस्से का आप पुन: उपयोग करना चाहिए? जब आप अपने ऐप को किसी अन्य प्लेटफॉर्म पर पोर्ट करते हैं तो नियंत्रक और दृश्य बदल जाएगा, क्योंकि इनपुट और आउटपुट दोनों के कार्यान्वयन को बदलने की आवश्यकता होगी। जिस कोड को बदलने की आवश्यकता नहीं है उसे आपके मॉडल में लागू किया जाना चाहिए।
यदि आपने सही चिंताओं को अलग किया है, तो मॉडल, व्यू, और कंट्रोलर को कम से कम जोड़ा जाएगा, और आप दूसरों को प्रभावित किए बिना किसी के कार्यान्वयन को बदल सकते हैं। यदि आप मॉडल बदलते हैं और आप स्वयं को नियंत्रक या दृश्य में बहुत से कोड को फिर से लिखते हैं, तो संभवतः आपने इन परतों को पर्याप्त रूप से अलग नहीं किया है। और इसके विपरीत।
कुछ अन्य दृष्टिकोण प्राप्त करने के लिए मार्टिन फाउलर के Anemic Domain Model एंटीपाटर या Domain Driven Design Quickly के बारे में पढ़ें।
मेरे blog from 2008 को भी देखें जो मैंने सक्रिय रिकॉर्ड पैटर्न को अस्वीकार करने वाले लोगों के जवाब में लिखा था। इसे कुछ अच्छी टिप्पणियां और चर्चा मिली।
स्रोत
2009-11-18 05:12:42
मैं सहमत हूं। स्कीनी नियंत्रक और वसा मॉडल मेरे जीवन को आसान बनाते हैं। –