आप ऐसा करने के सर्वोत्तम तरीके के बारे में कुछ तर्कों में भागने जा रहे हैं, लेकिन दिन के अंत में, आपके पास दो विकल्प हैं। या तो आप मॉडल को अन्य मॉडल से आवश्यक जानकारी खींच सकते हैं या आप नियंत्रक को आवश्यक जानकारी पास कर सकते हैं।
जो मैंने पढ़ा है उसके आधार पर, जब तक मॉडल में कोई नियंत्रक तर्क न हो या तर्क देखें तो आप अच्छे हैं इसलिए मॉडल को अन्य मॉडलों के बारे में जानने में कुछ भी गलत नहीं है। हालांकि, अन्य ने तर्क दिया है कि नियंत्रक को आवश्यक जानकारी पास करने के लिए कोड को थोड़ा आसान बनाता है क्योंकि आप देख सकते हैं कि मॉडल को कहीं और जानकारी की आवश्यकता है। हालांकि, दिन के अंत में, मैं दोनों मान्य होने के रूप में देखता हूं और जिसे आप उपयोग करना चुनते हैं, वह व्यक्तिगत वरीयता पर आ जाएगा।
डिजाइन - नियंत्रक प्रदान करता है डाटा
ModelOne
- उपयोगकर्ता GetCurrentUser()
ModelTwo
- आइटम [] GetItems (उपयोगकर्ता)
स्निपेट - नियंत्रक Proivdes डाटा
Controller {
function doWork() {
User user = ModelOne.GetCurrentUser();
Items[] items = ModelTwo.GetItems(user);
}
}
डिजाइन - मॉडल डाटा
मो हो जाता है Delone
- उपयोगकर्ता GetCurrentUser()
ModelTwo
स्निपेट - मॉडल हो जाता है डाटा
ModelTwo {
Items[] GetItems() {
User user = ModelOne.GetCurrentUser();
...
}
}
Controller {
function doWork() {
Items[] items = ModelTwo.GetItems();
}
}
धन्यवाद। इसलिए मैं पसंद करता हूं कि मॉडल को दूसरे मॉडल से डेटा प्राप्त हो। कारण यह है: स्टैक ओवरफ्लो पर प्रश्न पोस्ट करने से मैंने परिदृश्य को सरल बना दिया। वास्तविक परिदृश्य में मॉडल को अन्य मॉडलों (उदाहरण के लिए एक और मॉडल जो मौजूदा उपयोगकर्ता वफादारी स्तर के बारे में जानकारी का मालिक है) से अन्य जानकारी की आवश्यकता हो सकती है। तो मैं Model1.GetItems() में तर्क को केंद्रीकृत करना पसंद करता हूं जो सही आइटम सूची उत्पन्न करने के लिए आवश्यक सभी मॉडलों का उपयोग करेगा। – Stefano