মডেল সম্পর্কে কোন দৃশ্যের কতটা জানা উচিত?


10

আমি ডাব্লুপিএফের জন্য পাইথন মোড়ক দিয়ে এবং ড্যাগ সমর্থন দিয়ে পাইথনে একটি অ্যাপ্লিকেশন তৈরি করছি। আমি বর্তমানে এমন একটি স্থানে রয়েছি যেখানে ডেটা এবং দৃশ্যের মধ্যে ইন্টারঅ্যাক্ট করার একটি ধারাবাহিক উপায় আমাকে সিদ্ধান্ত নিতে হবে।

যতদূর আমি দেখছি বর্তমানে দুটি সুস্পষ্ট সমাধান রয়েছে।

প্রথমটি কীভাবে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে কাঠামোগত করা হয় তার সমান। আপনার কাছে এমন একটি নিয়ামক রয়েছে যা দৃশ্যটি সেট / পপুলেট করে। সুতরাং কন্ট্রোলার দর্শনটির মালিক এবং কেবল প্রদর্শিত আদিম তথ্যকে পুশ করে। দৃশ্যটি কেবল একটি বোবা স্তর এবং এটি কী ঘটছে এবং সেই ডেটাটি কোথা থেকে এসেছে সে সম্পর্কে কোনও ধারণা নেই। এবং তারপরে ব্যবহারকারী যদি এই দৃশ্যের সাথে ইন্টারঅ্যাক্ট করে তবে এটি নিয়ন্ত্রণকারীকে কলব্যাকগুলি প্রেরণ করবে (এটি নিবন্ধিত থাকলে)।

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

সম্পাদনা করুন:

যোগ করার জন্য - এই অ্যাপ্লিকেশনটি অজগরে লেখা হবে যা ডাকটিপিং সমর্থন করে। এর অর্থ হ'ল দ্বিতীয় পদ্ধতির সাহায্যে মডেলটি প্রয়োজনীয় ইন্টারফেসটির সাথে মিলিত হওয়া অবধি এখনও পুনরায় ব্যবহারযোগ্য।

উত্তর:


3

কেবলমাত্র "যুক্তি" একটি দৃশ্যে থাকতে হবে, এটি জিইউআইয়ের দৃশ্যমান স্থিতিকে ব্যবহারকারীর পরিবর্তনের জন্য দায়বদ্ধ কোড হওয়া উচিত। যে কোনও কোড যা ডেটা পরিচালনা করে বা একটি মান গণনা করে তা অন্য কোথাও হ্যান্ডেল করা উচিত।

আপনার দৃষ্টিভঙ্গিটি মডেলটি দেখতে কেমন তা জেনে রাখা উচিত, তবে মডেলটি প্রকাশিত কোনও জিনিসের সাথে সম্পর্কিত আচরণ সম্পর্কে অজ্ঞ হওয়া উচিত।

আপনার দৃষ্টিতে সাধারণ ডেটা ধরণের প্রেরণা এটি জিইউআই হেরফের এবং দর্শনীয় স্থিতি সংরক্ষণের জন্য উভয়কেই দায়ী করে, যা সহজেই অনস্বাস্থ্যের হয়ে উঠতে পারে।

যদি মডেলটি ভিউ দ্বারা ম্যানিপুলেশনের জন্য তৈরি করা হয় তবে আপনাকে সরাসরি ভিউতে মডেলটি পাস করতে হবে। যদি আপনার মডেলটি আপনার ডেটা স্টোরেজ মেকানিজম দ্বারা ব্যবহৃত একই হয়, যা আপনার অভ্যন্তরীণ উপস্থাপনা এবং উপস্থাপনের ডাইভার্জটি দেখতে (যেমন প্রায়ই হয়) রাস্তায় সমস্যা সৃষ্টি করতে পারে।

মূলত, আপনার কেবল যুক্তি, দেখুন মডেল, ডেটা মডেল এবং ব্যবসার যুক্তি পরিচালনা করার জন্য কিছু থাকা উচিত। তারপরে আপনার সমস্ত উদ্বেগগুলি সহজেই আলাদা হয়ে যায়, আপনাকে কেবল তাদের একসাথে আঠালো করতে হবে।


1

এটি কিছুটা জেনারেলাইজড উত্তর, তবে আইএমও ভিউতে কমপক্ষে কাজের সম্ভাব্য কাজ করা উচিত (যেমন ব্যবহারকারীদের ইনপুটগুলি বৈধতা দিন) ate

এইভাবে আপনি আশা করতে পারেন যে আপনার সমস্ত যুক্তি নিয়ন্ত্রকের মধ্যে থাকবে। এটি রাস্তা, একক দায়বদ্ধতার নীতি এবং এটি সমস্ত কিছু বজায় রাখা অনেক সহজ করে তোলে।


ঠিক আছে দ্বিতীয় পদ্ধতির মধ্যে যুক্তিটি এখনও ভিউ-মডেলটিতে থাকবে এবং ভিউতে নয়।
আর্টুর ভ্যানকান্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.