জটিল এমভিভিএম (একাধিক মতামত) এর সাথে সহায়তা করুন


18

নিম্নলিখিত দৃশ্যের জন্য আমার ভিউ মডেলগুলি তৈরি করতে সহায়তা প্রয়োজন:

  1. গভীর, শ্রেণিবদ্ধ তথ্য
  2. একই সেট ডেটার জন্য একাধিক দর্শন
  3. সক্রিয় নির্বাচনের উপর ভিত্তি করে প্রতিটি দর্শন একক, গতিশীল-পরিবর্তিত দৃশ্য
  4. কোনও মানের মান অনুসারে, কোনও ট্যাব নিয়ন্ত্রণে বিভিন্ন ধরণের ট্যাব প্রদর্শন করুন

এখানে চিত্র বর্ণনা লিখুন

আমার প্রশ্নগুলো:

আমি কি প্রতিটি দর্শন (ভিএম 1, ভিএম 2, ইত্যাদি) এর জন্য ভিউ-মডেল উপস্থাপনা তৈরি করব?

1. Yes:
    a. Should I model the entire hierarchical relationship? (ie, SubVM1, HouseVM1, RoomVM1)
    b. How do I keep all hierarchies in sync? (e.g, adding/removing nodes)

2. No:
    a. Do I use a huge, single view model that caters for all views?

এখানে একক দৃশ্যের উদাহরণ

চিত্র 1: সক্রিয় ঘরের উপর ভিত্তি করে একাধিক দর্শন আপডেট করা হয়েছে। ট্যাব নিয়ন্ত্রণ লক্ষ্য করুন

এখানে চিত্র বর্ণনা লিখুন

চিত্র 2: বিভিন্ন সক্রিয় কক্ষ। একাধিক বার আপডেট হয়েছে। ট্যাব নিয়ন্ত্রণ আইটেমগুলি বস্তুর সম্পত্তির উপর ভিত্তি করে পরিবর্তিত হয়েছে।

এখানে চিত্র বর্ণনা লিখুন

চিত্র 3: বিভিন্ন নির্বাচনের ধরণ। সম্পূর্ণ দর্শন পরিবর্তন

এখানে চিত্র বর্ণনা লিখুন


মুলির দৃষ্টিভঙ্গি কী? টাইপো?
জেনসজি

"মুলি ভিউ" একটি টাইপ ছিল। আমি একই মডেল / ভিউ মডেলের জন্য বিভিন্ন মতামত বোঝাতে চাইছি। আমার প্রশ্ন ছিল, আমি কি প্রতিটি দৃশ্যের জন্য পুরো মডেল শ্রেণিবিন্যাসটি পুনরায় তৈরি / মোড়ক করতে পারি, তাই প্রতিটি দৃশ্যের মডেলটিতে কেবল পৃথক দর্শনের প্রয়োজন অনুসারে কী থাকে? বা আমি কি একক ভিউ মডেল শ্রেণিবিন্যাস তৈরি করব যাতে সমস্ত দর্শন থেকে সম্পত্তি রয়েছে? যেহেতু আমি এই প্রশ্নটি পোস্ট করেছি, আমি দু'জনের উপকারিতা / কৌশলগুলি খুঁজে পাওয়ার পক্ষে যথেষ্ট শক্তিশালী (শক্তিশালী)। ভবিষ্যতে এই অভিজ্ঞতাটি সম্পূর্ণরূপে আমার অভিজ্ঞতার সম্পূর্ণ নির্ণয়ের সাথে আপডেট করবে, যখন জিনিসগুলি তেমন ব্যস্ত হয় না।
জয়ার্স

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

@jsjslim যখন আমি "সমস্ত শ্রেণিবিন্যাস সিঙ্কে রাখি" পড়ি তখন আমি বিস্মিত হই। আমি সন্দেহ করি যে আপনি মাল্টি-ভিউয়ের সাথে গেছেন, এবং আমার সন্দেহ হয় যে আপনি এটির জন্য দুঃখ প্রকাশ করেছেন (তবে আমি আগে ভুল হয়ে গিয়েছিলাম)। অন্যান্য পাঠকদের জন্য যাদের একই প্রশ্ন থাকতে পারে, আপনি কি কমপক্ষে আমাদের দ্রুত (ইশ) উত্তর দিতে পারেন?
গাই শালনাট

2
@ লোক-স্ক্যালনাত মাল্টি ভিউয়ের প্রয়োজন ছিল। আমার সমস্যাটি ভিউ মডেলগুলি কীভাবে তৈরি করবেন তা নির্ধারণের চেষ্টা করছিল। প্রকল্পটি এখনও চলছে, এবং সম্পূর্ণ বিশ্লেষণ লেখার সময় আমি খুঁজে পাচ্ছি না। তবে সংক্ষেপে: আমার মডেল কাঠামোটি উপেক্ষা করা উচিত ছিল এবং দৃষ্টিভঙ্গিতে মনোনিবেশ করা উচিত ছিল। আমি যে জটিলতার মুখোমুখি হয়েছি তা স্ব-চাপিয়ে দেওয়া হয়েছিল: আমি ডাব্লুপিএফ এর ডেটা বন্ডিংকে খুব খারাপভাবে ব্যবহার করতে চেয়েছিলাম, আমি স্থির হয়ে গেলাম। শেষ পর্যন্ত যা করেছি তা ভাল, পুরানো "কপি / পেস্ট / রিফ্যাক্টর"। যে চূড়ান্ত নকশাটি উদ্ভূত হয়েছিল তা হ'ল লাইটওয়েট (সামান্য পুনরাবৃত্তি) এবং আরও গুরুত্বপূর্ণভাবে কাজ করা হয়েছিল। ভবিষ্যতে একটি সম্পূর্ণ বিশ্লেষণ লিখতে হবে।
জায়ার্স

উত্তর:


13

প্রশ্নের উত্তর দেওয়ার জন্য, হ্যাঁ, প্রতিটি দৃশ্যের নিজস্ব ভিউ মডেল থাকা উচিত। তবে পুরো শ্রেণিবিন্যাসকে মডেল করার দরকার নেই। ভিউটি কেবল যা প্রয়োজন।

এমভিভিএম সম্পর্কিত বেশিরভাগ অনলাইন সংস্থান নিয়ে আমার যে সমস্যাটি ছিল:

বেশিরভাগ উদাহরণে, ভিউটি প্রায় 1-থেকে -1 মডেলটির ম্যাপিং। তবে আমার দৃশ্যে, যেখানে একই মডেলের বিভিন্ন দিকগুলির জন্য পৃথক দৃষ্টিভঙ্গি রয়েছে, আমি নিজেকে দুটি পছন্দের মধ্যে আটকে দেখতে পেয়েছি:

একটি মনোলিথিক ভিউ মডেল যা অন্য সমস্ত ভিউ মডেল ব্যবহার করে

এখানে চিত্র বর্ণনা লিখুন

বা প্রতিটি দর্শনর জন্য একটি ভিউ মডেল

এখানে চিত্র বর্ণনা লিখুন

তবে দুটোই আদর্শ নয়।

কোড সদৃশতা কম থাকায় মডেল-ওরিয়েন্টেড ভিউ মডেল (এমভিএম) বজায় রাখার জন্য একটি দুঃস্বপ্ন

ভিউ-ওরিয়েন্টেড ভিউ মডেল (ভিভিএম) প্রতিটি দৃশ্যের জন্য উচ্চ-বিশেষায়িত ক্লাস তৈরি করে তবে এতে নকল রয়েছে।

শেষ পর্যন্ত, আমি স্থির করেছিলাম যে ভিউয়ের প্রতি একজন ভিএম থাকা আপনার পক্ষে বজায় রাখা এবং কোড করা সহজ, তাই আমি ভিভিএম পদ্ধতির সাথে চলেছি।

কোডটি কাজ করা হয়ে গেলে, আমি সমস্ত সাধারণ সম্পত্তি এবং ক্রিয়াকলাপগুলিকে তার বর্তমান, চূড়ান্ত আকারে রিফ্যাক্ট করতে শুরু করেছি:

এখানে চিত্র বর্ণনা লিখুন

এই চূড়ান্ত ফর্মটিতে, সাধারণ ভিউ মডেল শ্রেণি প্রতিটি ভিভিএমের সমন্বয়ে গঠিত।

অবশ্যই, আমি এখনও সাধারণ / বিশেষায়িত বলে বিবেচিত হয় তা সিদ্ধান্ত নিতে হবে। এবং যখন কোনও ভিউ যুক্ত / সংযুক্ত / মুছে ফেলা হয় তখন এই ভারসাম্যটি পরিবর্তিত হয়।

তবে এ সম্পর্কে দুর্দান্ত জিনিসটি হ'ল, আমি এখন সাধারণ থেকে ভিভিএম এবং তদ্বিপরীত সদস্যদের উপর থেকে নামিয়ে আনতে সক্ষম হয়েছি।

এবং অবজেক্টগুলিকে সিঙ্কে রাখার বিষয়ে একটি দ্রুত নোট:

একটি কমন ভিউ মডেল থাকায় এটি বেশিরভাগের যত্ন নেয়। প্রতিটি ভিভিএমের মধ্যে একই কমন ভিউ মডেলের উল্লেখ থাকতে পারে have

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

এবং সত্যিই জটিল ইভেন্টগুলির জন্য (অর্থাত্ অপ্রত্যাশিত ক্যাসকেডিং আপডেট), আমি কোনও মধ্যস্থতাকারী ব্যবহার করে স্যুইচ করব।

আমি কোড থেকে লজ্জা পাই না যেখানে কোনও সন্তানের তার পিতামাতার সাথে পিছনে উল্লেখ রয়েছে। কোড কাজ পেতে কিছু।

এবং যদি চুল্লি করার সুযোগ ওঠে তবে আমি তা গ্রহণ করব।

আমি যে পাঠগুলি শিখেছি:

  1. কুরুচিপূর্ণ / কার্যকারী কোড> সুন্দর / অ-কার্যকারী কোড
  2. বিশাল ক্লাস ভাঙার চেয়ে একাধিক ছোট ক্লাস একীভূত করা সহজ

আমি আশা করি আমি এই দুটি বার upvote করতে পারে। এটি আমি যে বিকল্পগুলি দেখেছি তার স্পষ্ট ব্যাখ্যা।
চতুর মানব

3

আপনার মকআপগুলিতে তাকিয়ে আমি অবশ্যই ভিউমোডেলস এবং প্রচুর ছোট দর্শনগুলির শ্রেণিবিন্যাস তৈরি করার পরামর্শ দেব। এবং আপনাকে সম্ভবত সম্ভবত মূল শ্রেণিবিন্যাসের বেশ কিছুটা মডেল করতে হবে।

ভিউমোডেলগুলির মধ্যে জিনিসগুলি সিঙ্কে রাখার জন্য, ইভেন্টগুলি ব্যবহার করুন বা ভিউমোডেলগুলির মধ্যে একে অপরের বৈশিষ্ট্য রয়েছে। ভিউ এবং ভিউমোডেলগুলির মধ্যে সিঙ্ক হ'ল মান নোটিফিকেশন বৈশিষ্ট্য।

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