2011-03-17 15 views
7

मैं एक डब्ल्यूपीएफ प्रिज्म एप्लिकेशन विकसित कर रहा हूं, और सब ठीक काम कर रहा है। मेरे दृश्य मॉडल में सभी इंटरफेस हैं, जिन्हें एमईएफ द्वारा इंजेक्शन दिया जाता है।मॉडल और इंटरफेस देखने के बारे में

हालांकि, मैं वास्तव में मॉडल देखने के लिए इंटरफेस के लाभ को समझ नहीं पा रहा हूं। आखिरकार, एक दृश्य अपने दृश्य मॉडल से जुड़ा हुआ है, इसलिए मुझे लगता है कि कभी भी अन्य कार्यान्वयन नहीं होंगे।

दरअसल, मेरे विचारों के लिए मेरे पास इंटरफेस भी है। ऐसा लगता है कि यह भी अधिक है?

तो मेरा सवाल है: क्या मैं सिर्फ सभी दृश्यों को हटा नहीं सकता और मॉडल इंटरफेस देख सकता हूं और विचारों को इंजेक्ट कर सकता हूं और सीधे मॉडल देख सकता हूं? विचारों के लिए इंटरफेस रखने और मॉडल देखने के लिए कोई कारण है?

Thx, एल

उत्तर

4

अपने VieWModels को इंटरफेसिंग करने से आपको परीक्षण में उनका मज़ाक उड़ाते हुए लाभ मिलता है, आपके विचारों को इंटरफ़ेस करना वास्तव में कुछ ओवरकिल जैसा दिखता है। आप अपने विचारों का आदान-प्रदान नहीं करेंगे और यूआई परीक्षण आपके व्यू मॉडेल के मैक्स पर किए जा सकते हैं ताकि आपको वास्तव में उनको इंटरफ़ेस करने की आवश्यकता न हो।

+0

परीक्षण में अपने व्यू मॉडेल का नकल क्यों करें? मैं सिर्फ वास्तविक व्यूमोडेल का उपयोग करता हूं। –

+0

मैं उन में अपेक्षाओं को रखने के लिए व्यूमोडल्स का मज़ाक उड़ाऊंगा। इस तरह से मुझे पता है कि परीक्षण करते समय दृश्यों को कैसे देखना चाहिए। मैं टेस्ट भी लिख सकता हूं जो व्यूमोडल्स को डेटा के साथ भर देगा और उन्हें परीक्षण के दौरान प्रदान करेगा। यह वास्तव में वही है। –

+1

धन्यवाद, तो क्या मैं यह कहने में सही हूं कि दृश्य मॉडल को इंटरफ़ेस करने में वास्तव में बहुत अधिक मूल्य नहीं है: 1. हमें उन्हें नकल करने की आवश्यकता नहीं है, क्योंकि यह दृश्य मॉडल है जिसे परीक्षण किया जाना चाहिए। 2. इसलिए, एक उप दृश्य मॉडल का मज़ाक उड़ाते हुए ज्यादा समझ नहीं आता है, क्योंकि हम भी वास्तविक परीक्षण करना चाहते हैं। 3. विचारों का परीक्षण करने के लिए, हम डेटा के साथ वास्तविक दृश्य मॉडल भरें। 4. एक दृश्य के रूप में इसके दृश्य मॉडल के साथ मिलकर, हमेशा 1 कार्यान्वयन होगा। –

2

सबसे बड़ा कारण रहा ViewModels के लिए इंटरफेस के लिए के बारे में सोच सकते हैं हो सकता है कि आप mocks कि उपयोग के लिए उन इंटरफेस को लागू करते हुए इकाई परीक्षण लिख सकते हैं। चूंकि एक व्यूमोडेल दूसरे से बात कर सकता है, यह आपको पहले परीक्षण करते समय दूसरे व्यू मॉडल्स व्यवहार को रोकने में सक्षम बनाता है।

एमवीवीएम पैटर्न कक्षाओं का परीक्षण करना आसान बनाता है क्योंकि यह यूआई परत से डेटा और नियंत्रण को अलग करता है (जो यूनिट परीक्षण लिखना कठिन होता है)। निजी तौर पर, मैं अपने विचारों के लिए इंटरफेस नहीं लिखता हूं।

7

यह एक ओवरकिल है। मैं समझता हूं कि आप अपने व्यू मॉडेल को मॉक करना चाहते हैं, लेकिन मुझे लगता है कि व्यावहारिक होना अधिक महत्वपूर्ण है। इसके अलावा, आपको अपने व्यू मॉडेल का नकल करने की आवश्यकता क्यों होगी? किसी भी तर्क को मजाक करने की जरूरत है जिसे सेवा कक्षा आईएमएचओ में रखा जाना चाहिए।

+0

यह वास्तव में मेरा पहला विचार था। ऐसा लगता है कि लाभ यह है कि, यदि आपके पास एकाधिक दृश्य मॉडल हैं, तो आप उनमें से एक का परीक्षण कर सकते हैं और दूसरों को नकल कर सकते हैं। मुझे आश्चर्य है कि मैं कभी ऐसा करूँगा ... अधिकांश तर्क वास्तव में 'सेवाओं' में हैं जो इंजेक्शन दिए जाते हैं और मेरे नकली कार्यान्वयन को प्रतिस्थापित किया जा सकता है। –

संबंधित मुद्दे