प्रश्न मुश्किल हो सकता है (इसकी प्रकृति या इसका वर्णन करने का मेरा तरीका), इसलिए जवाब देने से पहले इसे वास्तव में पढ़ें।डेस्कटॉप एप के लिए एमवीसी बिना डाटा लेयर
मेरे पास यह ऐप लिखने के लिए है:
ए) डेस्कटॉप ऐप;
बी) डेटाबेस, फ़ाइलों या किसी अन्य भंडार के अर्थ में कोई डेटा परत नहीं (डेटा को सहेजने, स्टोर करने या लोड करने की कोई आवश्यकता नहीं है);
सी) ऐप में कुछ गणना एल्गोरिदम लागू होंगे (जेनेटिक एल्गोरिदम);
बी) जीयूआई प्रदान करता है जो ऐप और गणना परिणामों के लिए नियंत्रण प्रदर्शित करेगा।
मैं एमवीसी पैटर्न का उपयोग करने के बारे में सोच रहा हूं लेकिन मुझे संदेह है कि इसका उपयोग कैसे करें। चूंकि मेरे पास (उदाहरण के लिए) डेटाबेस (डेटा इनपुट के आधार पर निष्पादन के दौरान डेटा उत्पन्न होता है) के अर्थ में कोई डेटा परत नहीं है, इसलिए मैं इस कार्यान्वयन में एमवीसी का उपयोग करने के तरीके के बारे में चिंतित हूं। अब तक मैं दो दृष्टिकोणों के साथ आया हूं:
GUI दृश्य है। जेनेटिक एल्गोरिदम नियंत्रक है। जेनेटिक एल्गोरिदम रिसेल्ट्स मॉडल है (कक्षा के रूप में जो केवल डेटा स्टोर करता है)। मूल प्रवाह:
- व्यू नियंत्रक को उपयोगकर्ता इनपुट भेजता है;
- नियंत्रक उपयोगकर्ता इनपुट को संसाधित कर रहा है और डेटा उत्पन्न करता है;
- नियंत्रक मॉडल को जेनरेट डेटा भेजता है;
- मॉडल नए डेटा के बारे में दृश्य को सूचित करता है;
- व्यू नया डेटा खींचता है और प्रदर्शन को अपडेट करता है।
जीयूआई दृश्य है। AppEngine नियंत्रक है। जेनेटिक एल्गोरिदम नड जेनेटिक एल्गोरिदम रिसेल्ट मॉडल हैं। अब हमारे पास है:
- व्यू नियंत्रक को उपयोगकर्ता इनपुट भेजता है;
- नियंत्रक उपयोगकर्ता इनपुट को संसाधित कर रहा है और मॉडल को नियंत्रण सिग्नल भेजता है।
- मॉडल अपने आंतरिक स्थिति को अद्यतन करता है (नया डेटा उत्पन्न करता है);
- मॉडल नियंत्रक को नए डेटा के बारे में सूचित करता है;
- नियंत्रक डेटा को मॉडल खींचता है;
- नियंत्रक डेटा संसाधित करता है;
- नियंत्रक संसाधित डेटा को दृश्य में धक्का देता है;
- दृश्य प्रदर्शन को अद्यतन करता है।
पहले दृष्टिकोण और अधिक सरल और अधिक MVC की तरह हो रहा है। समस्या यह है कि कुछ तर्क मॉडल में होना चाहिए - यह तय करें कि मॉडल को सूचित करने के लिए जब सभी डेटा अपडेट प्रदर्शित नहीं होंगे, या शायद प्रदर्शन डेटा के सेट के साथ अद्यतन किया जाएगा, हर छोटे बदलाव में नहीं। वे निर्णय उपयोगकर्ता इनपुट पर आधारित होंगे। वास्तविक प्रदर्शन से पहले डेटा की कुछ अतिरिक्त प्रक्रिया की आवश्यकता हो सकती है। यह दृश्य में होगा।
दूसरी तरफ दूसरा दृष्टिकोण अधिक जटिल लगता है और ऐसा लगता है कि कार्य को प्राप्त करने के लिए बहुत से संदेश पारित किए जा रहे हैं।लेकिन यह नियंत्रक को तर्क का पूर्ण नियंत्रण देता है और दृश्य, नियंत्रक और मॉडल (जो एमवीसी का मुख्य उद्देश्य है) की जिम्मेदारियों को अलग करता है।
आप किस दृष्टिकोण की सिफारिश करेंगे? या शायद मुझे उन्हें मिश्रण करना चाहिए और दूसरे दृष्टिकोण से संचार प्रवाह के साथ पहली दृष्टिकोण वास्तुकला का उपयोग करना चाहिए? या कुछ अलग डिजाइन?