আমি ডাব্লুপিএফের জন্য পাইথন মোড়ক দিয়ে এবং ড্যাগ সমর্থন দিয়ে পাইথনে একটি অ্যাপ্লিকেশন তৈরি করছি। আমি বর্তমানে এমন একটি স্থানে রয়েছি যেখানে ডেটা এবং দৃশ্যের মধ্যে ইন্টারঅ্যাক্ট করার একটি ধারাবাহিক উপায় আমাকে সিদ্ধান্ত নিতে হবে।
যতদূর আমি দেখছি বর্তমানে দুটি সুস্পষ্ট সমাধান রয়েছে।
প্রথমটি কীভাবে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে কাঠামোগত করা হয় তার সমান। আপনার কাছে এমন একটি নিয়ামক রয়েছে যা দৃশ্যটি সেট / পপুলেট করে। সুতরাং কন্ট্রোলার দর্শনটির মালিক এবং কেবল প্রদর্শিত আদিম তথ্যকে পুশ করে। দৃশ্যটি কেবল একটি বোবা স্তর এবং এটি কী ঘটছে এবং সেই ডেটাটি কোথা থেকে এসেছে সে সম্পর্কে কোনও ধারণা নেই। এবং তারপরে ব্যবহারকারী যদি এই দৃশ্যের সাথে ইন্টারঅ্যাক্ট করে তবে এটি নিয়ন্ত্রণকারীকে কলব্যাকগুলি প্রেরণ করবে (এটি নিবন্ধিত থাকলে)।
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)
সুতরাং আমি অনুমান করি যে আমি যা জিজ্ঞাসা করছি তা কি আমার খুব আদিম ডেটা পাস করা উচিত এবং ভিউটিকে যতটা সম্ভব জেনেরিক রাখা উচিত, তারপরে কলব্যাক নিয়ে কাজ করা এবং নিয়ামকটিতে ব্যবসায়ের ক্ষেত্রগুলি করা উচিত।
অথবা আমার পুরো মডেলটি দর্শনে পাস করা উচিত এবং ভিউটি সরাসরি মডেলটি আপডেট করতে দেওয়া উচিত। এর অর্থ টাইপ করার জন্য কম কোড থাকবে।
পুনশ্চ. কোডটি বিচার করবেন না - এটি কেবল দেখার জন্য ization
সম্পাদনা করুন:
যোগ করার জন্য - এই অ্যাপ্লিকেশনটি অজগরে লেখা হবে যা ডাকটিপিং সমর্থন করে। এর অর্থ হ'ল দ্বিতীয় পদ্ধতির সাহায্যে মডেলটি প্রয়োজনীয় ইন্টারফেসটির সাথে মিলিত হওয়া অবধি এখনও পুনরায় ব্যবহারযোগ্য।