2012-02-06 12 views
10

हम एमवीपी पैटर्न के साथ काम कर रहे हैं, और मैं सोच रहा था कि जीयूआई कार्यों से कैसे निपटें।प्रस्तुतकर्ता एमवीपी पैटर्न में जीयूआई तर्क प्रदर्शन करता है?

उदाहरण के लिए, जब उपयोगकर्ता ग्रिड से एक पंक्ति को हटाना चाहता है, तो उपयोगकर्ता हटाएं बटन दबाता है। इस बिंदु पर आप दो चीजें कर सकते हैं:

1) _presenter.DeleteRow() पर कॉल करें और प्रस्तुतकर्ता को _view.SelectedRow पर कॉल करें। फिर प्रस्तुतकर्ता view.AskUserForConfirmation() पर कॉल करता है, और जब यह DialogResult.OK वापस आता है, तो प्रस्तुतकर्ता वास्तव में अंतर्निहित वस्तु को हटा देता है और ग्रिड को रीफ्रेश करता है।

2) प्रपत्र पुष्टि के लिए उपयोगकर्ता पूछता है और जब DialogResultOK है, तो presenter.Delete(myObject) कहा जाता है या presenter.Delete() कहा जाता है और Delete विधि के भीतर वस्तु _view.SelectedRow फोन करके लिया गया है।

आप इस तरह की स्थितियों को कैसे संभालेंगे?

उत्तर

4

एमवीपी पैटर्न आपके तर्क, दृश्य और डेटा पहुंच को अलग करना है। तो यह तय करने का प्रयास करते समय कि कुछ कहां जाना चाहिए, खुद से पूछें कि क्या आप जो करने की कोशिश कर रहे हैं उसमें वास्तविक व्यापार तर्क है।

क्या आप चाहते हैं कि आपकी व्यावसायिक परत पॉप-अप विंडो प्रदर्शित करने के बारे में तर्क करे? शायद ऩही। यह सिर्फ एक पुष्टिकरण संदेश है। आप एक सहायक वर्ग चाहते हैं जो आपकी शैली वाली पॉप अप विंडो उत्पन्न करे, लेकिन यह आपकी प्रेजेंटर परत से अलग है।

2

विकल्प 2. पुष्टि के लिए पूछना एक यूआई जिम्मेदारी है जिसे प्रस्तुतकर्ता को चिंता करने की आवश्यकता नहीं है। मैं प्रस्तुतकर्ता को तब तक शामिल नहीं करता जब तक कि वास्तव में मॉडल में कुछ करने का समय न हो, या जब तक कि कुछ जटिल व्यावसायिक तर्कों को लागू करने की आवश्यकता न हो।

इसका मतलब यह नहीं है कि विकल्प 1 अमान्य है। यह मेरी राय में, अनावश्यक दृश्य/प्रस्तुतकर्ता बकवास बनाता है।

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