मैं python में WPF के लिए अजगर आवरण और DAG समर्थन के साथ एक एप्लिकेशन बना रहा हूं। मैं वर्तमान में एक ऐसे बिंदु पर हूं जहां मुझे डेटा और दृश्य के बीच बातचीत का एक सुसंगत तरीका तय करना है।
जहाँ तक मैं देख रहा हूँ वर्तमान में दो स्पष्ट समाधान हैं।
पहले एक के समान है कि एंड्रॉइड एप्लिकेशन कैसे संरचित हैं। आपके पास एक नियंत्रक है जो दृश्य को सेट / पॉप्युलेट करता है। इसलिए नियंत्रक दृश्य का मालिक है और केवल उस आदिम डेटा को धक्का देता है जो प्रदर्शित किया जाएगा। यह दृश्य केवल एक गूंगा परत है और इस बात का कोई पता नहीं है कि क्या हो रहा है और वह डेटा कहां से है। और फिर अगर उपयोगकर्ता दृश्य के साथ बातचीत करता है, तो यह नियंत्रक को कॉलबैक भेज देगा (यदि यह पंजीकृत है)।
UserInfoController.py
userInfoView = UserInfoView()
userInfoView.onGenderChangedCallback = self.onGenderChangedCallback
userInfoView.setUserGenderValue(user.getGender())
UserInfoView.py
def setUserGenderValue(self, gender):
self.userGender = gender
def getView(self):
return ui.Label(self.userGender, onEditCallback=self.onGenderChangedCallback)
दूसरा एक दृश्य के लिए (संदर्भ) मॉडल पारित कर रहा है और डेटा को पुनर्प्राप्त करने और अद्यतन करने के लिए दृश्य को दे रहा है। दृश्य में अब मॉडल शामिल है और इसलिए यह नियंत्रक को बिना किसी अतिरिक्त कॉलबैक के इसे अपडेट कर सकता है।
UserInfoViewModel.py
self.gender = 'Male'
UserInfoView.py
def getView(self):
return ui.Label(self.ViewModel().getGender(), onEdited=self.genderEdited)
def genderEdited(self, newValue):
self.ViewModel().setGender(newValue)
इसलिए मुझे लगता है कि मैं जो पूछ रहा हूं, क्या मुझे बहुत ही आदिम डेटा पास करना चाहिए और दृश्य को यथासंभव सामान्य रखना चाहिए, फिर कॉलबैक के साथ काम करना चाहिए और नियंत्रक में व्यवसाय की बारीकियों को करना चाहिए।
या क्या मुझे पूरे मॉडल को दृश्य में पास करना चाहिए और दृश्य को सीधे मॉडल को अपडेट करने देना चाहिए। इसका मतलब है कि टाइप करने के लिए कम कोड होंगे।
पुनश्च। कोड को न देखें - यह सिर्फ विज़ुअलाइज़ेशन के लिए है।
संपादित करें:
साथ ही जोड़ने के लिए - इस एप्लिकेशन को अजगर में लिखा जाएगा जो डकपिपिंग का समर्थन करता है। इसका मतलब यह है कि दूसरे दृष्टिकोण के साथ, दृश्य अभी भी पुन: प्रयोज्य है जब तक कि मॉडल आवश्यक इंटरफ़ेस को पूरा नहीं करता है।