উইনফর্মস সমাধানের জন্য আমি কীভাবে এমভিপি সেট আপ করব?


14

আমি অতীতে এমভিপি এবং এমভিসি ব্যবহার করেছি এবং আমি এমভিপি পছন্দ করি কারণ এটি আমার মতে মৃত্যুদন্ড কার্যকর করার প্রবাহকে আরও ভালভাবে নিয়ন্ত্রণ করে।

আমি আমার অবকাঠামো তৈরি করেছি (ডাটাস্টোর / সংগ্রহশালা ক্লাস) এবং যখন নমুনা ডেটা হার্ড কোডিংয়ের সময় সমস্যা ছাড়াই এগুলি ব্যবহার করি, তাই এখন আমি জিইআইতে চলে যাচ্ছি এবং আমার এমভিপি প্রস্তুত করছি।

অধ্যায় একটি

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

  2. আমি উপস্থাপককে এন্ট্রি পয়েন্ট হিসাবেও দেখেছি, যেখানে একটি ভিউ, মডেল এবং উপস্থাপক তৈরি করা হয়, এই উপস্থাপককে তার ইভেন্টে তারের জন্য তার কনস্ট্রাক্টরে একটি ভিউ এবং মডেল অবজেক্ট দেওয়া হয়।

  3. 2 হিসাবে, কিন্তু মডেলটি উপস্থাপকের কাছে যায় না। পরিবর্তে মডেলটি একটি স্ট্যাটিক শ্রেণি যেখানে পদ্ধতিগুলি বলা হয় এবং প্রতিক্রিয়াগুলি সরাসরি ফিরে আসে।

বিভাগ বি

দৃষ্টিভঙ্গি এবং মডেল সিঙ্কে রাখার ক্ষেত্রে আমি দেখেছি।

  1. যখনই ভিউতে কোনও মান পরিবর্তিত হয়, অর্থাত্ TextChangedনেট। / সি # তে ইভেন্ট। এটি DataChangedEventসর্বদা সিঙ্কে রাখার জন্য এটি মডেলটির মধ্য দিয়ে যায় fire এবং যেখানে মডেলটি পরিবর্তিত হয়, অর্থাত্ একটি পটভূমি ইভেন্ট এটি শোনায়, তারপরে ভিউ একটি উত্থাপনের একই ধারণার মাধ্যমে আপডেট করা হয় DataChangedEvent। যখন কোনও ব্যবহারকারী কোনও পরিবর্তন করতে চায় তবে SaveEventতা সংরক্ষণ করে মডেলটির মধ্যে দিয়ে সেভ করে তোলে। এই ক্ষেত্রে মডেলটি ভিউটির ডেটা নকল করে এবং ক্রিয়াগুলি প্রক্রিয়া করে।

  2. # বি 1 এর মতো, তবে ভিউটি সমস্ত সময় মডেলটির সাথে সিঙ্ক হয় না। পরিবর্তে যখন ব্যবহারকারী পরিবর্তন করতে চায়, SaveEventবরখাস্ত করা হয় এবং উপস্থাপক সর্বশেষ বিবরণটি ধরেন এবং এগুলি মডেলটিতে প্রেরণ করেন। এক্ষেত্রে মডেলটি ভিউ ডেটা সম্পর্কে জানতে না পারে যতক্ষণ না তার উপর কাজ করার প্রয়োজন হয়, এই ক্ষেত্রে এটি সমস্ত প্রয়োজনীয় বিবরণটি পাস করা হয়।

বিভাগ সি

ভিউতে ব্যবসায়িক সামগ্রীর প্রদর্শন, যেমন একটি বস্তু (মাইক্লাস) আদিম ডেটা নয় (অন্তর্গত, ডাবল)

  1. ভিউয়ের সমস্ত ডেটার জন্য সম্পত্তি ক্ষেত্র রয়েছে যা এটি ডোমেন / ব্যবসায়িক অবজেক্ট হিসাবে প্রদর্শিত হবে। যেমন view.Animalsকোনও IEnumerable<IAnimal>সম্পত্তি প্রকাশ করে , যদিও ভিউটি একটি ট্রিউউউতে নোডগুলিতে প্রসেস করে। তারপরে নির্বাচিত প্রাণীর জন্য এটি সম্পত্তি SelectedAnimalহিসাবে প্রকাশ করবে IAnimal

  2. ভিউটিতে ডোমেন অবজেক্টের কোনও জ্ঞান নেই, এটি আদিম / কাঠামো (। নেট / জাভা) এর জন্য সম্পত্তি যুক্ত করে কেবলমাত্র বস্তুর ধরণের অন্তর্ভুক্ত। এই উদাহরণস্বরূপ উপস্থাপক একটি অ্যাডাপ্টার বস্তুকে ডোমেন অবজেক্টটি পাস করবেন, অ্যাডাপ্টার তারপরে একটি প্রদত্ত ব্যবসায়ের বস্তুকে ভিউতে দৃশ্যমান নিয়ন্ত্রণগুলিতে অনুবাদ করবে। এই উদাহরণস্বরূপ অ্যাডাপ্টারের অবশ্যই দৃশ্যের আসল নিয়ন্ত্রণগুলিতে অ্যাক্সেস থাকতে হবে, কেবল কোনও ভিউ নয় তাই আরও দৃly়তার সাথে মিলিত হয়।

বিভাগ ডি

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

  1. আপনি একটি বিশাল ভিউ তৈরি করেন, এতে সমস্ত পৃথক নিয়ন্ত্রণ থাকে যা ভিউজ ইন্টারফেসের মাধ্যমে উন্মুক্ত হয়।

  2. আপনার বেশ কয়েকটি মতামত রয়েছে। আপনার মেনু এবং একটি ফাঁকা প্যানেলের জন্য একটি ভিউ রয়েছে। এই ভিউটি অন্যান্য প্রয়োজনীয় ভিউগুলি তৈরি করে তবে সেগুলি প্রদর্শন করে না (দৃশ্যমান = মিথ্যা), এই ভিউটিতে এটি প্রতিটি দর্শন (যেমন শিশু দর্শন) রয়েছে তার ইন্টারফেসও প্রয়োগ করে যাতে এটি কোনও উপস্থাপকের কাছে প্রকাশ করতে পারে। ফাঁকা প্যানেলটি অন্যান্য দর্শন ( Controls.Add(myview)) এবং ( (myview.visible = true) দিয়ে পূর্ণ । এই "শিশু" - দর্শনগুলিতে উত্থাপিত ইভেন্টগুলি পিতামাতার দৃশ্যের দ্বারা পরিচালিত হয় যা ফলস্বরূপ ইভেন্টটিকে উপস্থাপকের কাছে প্রেরণ করে এবং ভিসার বিপরীতে ইভেন্টগুলি শিশু উপাদানগুলিতে সরবরাহ করে।

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

বিভাগ E

উপরের উদাহরণগুলিতে এমভিপি কীভাবে করা হয়েছে তার উপর ভিত্তি করে এখন সব কিছুর ইন্টারফেস থাকতে হবে কারণ তারা ক্রস-সামঞ্জস্যপূর্ণ নাও হতে পারে।

  1. সবকিছুর একটি ইন্টারফেস, ভিউ, উপস্থাপক এবং মডেল রয়েছে। এগুলির প্রত্যেকেরই অবশ্যই একটি দৃ a় বাস্তবায়ন রয়েছে। এমনকি যদি আপনার কাছে কেবল একটি কংক্রিট ভিউ, মডেল এবং উপস্থাপক থাকে।

  2. ভিউ এবং মডেলের একটি ইন্টারফেস রয়েছে। এটি দর্শন এবং মডেলগুলিকে পৃথক করতে দেয়। উপস্থাপক তৈরি / প্রদত্ত ভিউ এবং মডেল অবজেক্ট তৈরি করে এবং এটি কেবল তাদের মধ্যে বার্তা প্রেরণ করে।

  3. শুধুমাত্র ভিউয়ের একটি ইন্টারফেস রয়েছে। মডেলটির স্থিতিশীল পদ্ধতি রয়েছে এবং এটি তৈরি হয় না, সুতরাং ইন্টারফেসের প্রয়োজন হয় না। আপনি যদি অন্য কোনও মডেল চান, উপস্থাপক স্ট্যাটিক শ্রেণির পদ্ধতিগুলির একটি আলাদা সেট কল করে। অবিচল হওয়া মডেলটির উপস্থাপকের কোনও লিঙ্ক নেই।

ব্যক্তিগত চিন্তা

আমি উপস্থাপিত সমস্ত বিভিন্ন প্রকারের থেকে (বেশিরভাগ ক্ষেত্রে আমি সম্ভবত কিছু ফর্ম ব্যবহার করেছি) যার মধ্যে আমি নিশ্চিত যে আরও কিছু আছে। আমি কম এমপিপি, বি 2 এর বাইরে ব্যবসায়ের যুক্তি পুনরায় ব্যবহারযোগ্য হিসাবে ডেটা নকলকরণ এবং কম ইভেন্টগুলিকে বরখাস্ত করার জন্য এ 3 কে পছন্দ করি। অন্য শ্রেণিতে যোগ না করার জন্য সি 1, নিশ্চিত যে এটি একটি অল্প পরিমাণে নন ইউনিট পরীক্ষামূলক যুক্তিকে একটি দৃষ্টিতে রাখে (কোনও ডোমেন অবজেক্টটি কীভাবে দৃশ্যমান হয়) তবে এটি পর্যালোচনা কোড, বা কেবল অ্যাপ্লিকেশনটিতে দেখা যেতে পারে। যুক্তিটি যদি জটিল ছিল তবে আমি অ্যাডাপ্টার শ্রেণিতে সম্মত হব তবে সব ক্ষেত্রেই নয় not বিভাগ ডি এর জন্য, আমি অনুভব করি যে ডি 1 একটি মেনু উদাহরণের জন্য কমপক্ষে একটি ভিউ তৈরি করে। আমি এর আগে ডি 2 এবং ডি 3 ব্যবহার করেছি। ডি 2 এর সমস্যাটি হ'ল আপনি উপস্থাপক থেকে সঠিক শিশু দর্শনে ইভেন্টগুলি রুট করার জন্য প্রচুর কোড লিখতে পেরেছেন এবং এটি ড্র্যাগ / ড্রপ সামঞ্জস্যপূর্ণ নয়, একক উপস্থাপককে সমর্থন করতে প্রতিটি নতুন নিয়ন্ত্রণের আরও বেশি তারের প্রয়োজন। ডি 3 আমার পছন্দসই পছন্দ তবে ভিউটি খুব সাধারণ বলে মনে হয় বা পুনরায় ব্যবহার করার প্রয়োজন না থাকলেও ভিউটি মোকাবেলা করার জন্য উপস্থাপক এবং মডেল হিসাবে আরও ক্লাসে যোগ করে। আমি মনে করি D2 এবং D3 এর মিশ্রণ পরিস্থিতি ভিত্তিতে সবচেয়ে ভাল। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি। আমি মনে করি D2 এবং D3 এর মিশ্রণটি পরিস্থিতি অনুসারে সেরা। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি। আমি মনে করি D2 এবং D3 এর মিশ্রণটি পরিস্থিতি অনুসারে সেরা। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি।

প্রশ্ন

আমি কি এমভিপি সঠিকভাবে প্রয়োগ করছি? এটি সম্পর্কে কোন সঠিক উপায় আছে?

আমি মার্টিন ফোলারের কাজ পড়েছি যার বিভিন্নতা রয়েছে এবং আমি মনে করি আমি যখন প্রথম এমভিসি করা শুরু করলাম তখন ধারণাটি বুঝতে পেরেছিলাম, তবে প্রবেশের পয়েন্টটি কোথায় রয়েছে তা মূলত কাজ করতে পারিনি, সমস্ত কিছুর নিজস্ব ফাংশন রয়েছে তবে কী নিয়ন্ত্রণ করে এবং আসলটি তৈরি করে এমভিসি অবজেক্টের সেট।


2
এই প্রশ্নটি জিজ্ঞাসা করার কারণটি হ'ল আমি প্রায় প্রথম প্রয়াসে এটি সঠিকভাবে পেতে চাই। একই প্যাটার্নটির জন্য বিভিন্ন প্রকরণ ব্যবহার করে 6 টি অ্যাপ্লিকেশন তৈরি করার পরিবর্তে আমার অনুসরণ করার জন্য একটি মানক এমভিপি দেওয়া উচিত।
উইলিস

নিখুঁত ... আমি এটি দীর্ঘ সময়ের জন্য জানতে চেয়েছিলাম
কিং

উত্তর:


4

আপনি এখানে যা উপস্থাপন করেন তা প্রচুর যুক্তিসঙ্গত এবং সাবলীল। কিছু পছন্দ অ্যাপ্লিকেশনের সাথে নির্দিষ্টকরণের উপর নির্ভর করে এবং কোনটি "সঠিক মনে করে"। বেশিরভাগ সময় যেমন হয়, তেমন একটি সঠিক উত্তর হতে পারে না। কিছু পছন্দ এখানে অর্থবোধ করবে এবং সেই পছন্দগুলি পরবর্তী প্রয়োগ এবং পরিস্থিতির জন্য সম্পূর্ণ ভুল হতে পারে। অ্যাপটির সুনির্দিষ্ট কিছু না জেনে আমি মনে করি আপনি সঠিক পথে রয়েছেন এবং কিছু দৃ sound়, চিন্তাশীল সিদ্ধান্ত নিয়েছেন।

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


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

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

@ জন - উপায় এমভিপি ভুল? আমার বইতে দেখা হবে যখন উপস্থাপক সম্পর্কে ভিউ জানে। এটি "ভুল" হতে পারে না এই অর্থে যে এটি কাজ করে তবে এটি কেবল এমভিপি হবে না, এটি সেই মুহুর্তে অন্য কোনও কিছুতে ছড়িয়ে পড়ে। নকশা নিদর্শনগুলির সাথে সমস্যাটি হ'ল উদাহরণগুলি সর্বদা যথাসম্ভব পরিষ্কার এবং সহজ simple তারপরে আপনি যখন প্রথমবার এগুলিকে বাস্তবায়ন করতে যান এবং বাস্তব বিশ্বের ঝাঁপিয়ে পড়ে এবং বলে 'আরে বাস্তব অ্যাপ্লিকেশনগুলি সেই শাস্তির উদাহরণের চেয়ে আরও জটিল।' এখান থেকেই আপনার বৃদ্ধি শুরু হয়। আপনার এবং অ্যাপের পরিস্থিতিতে কী কাজ করে তা সন্ধান করুন।
ওয়াল্টার

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

1
@ জন - আপনার বৈচিত্রগুলি এমভিপির চেতনার সাথে সামঞ্জস্য রেখে বেশ সুন্দর। ইন্টারফেস বা কংক্রিটের ধরণের সাথে কাজ করার ক্ষেত্রে এটি অ্যাপের পরিস্থিতিতে নির্ভর করে। যদি অ্যাপটি মোটামুটি ছোট হয় তবে খুব জটিল না হয় তবে সম্ভবত ইন্টারফেস যুক্ত করার প্রয়োজন নেই। আমি যতটা সম্ভব জিনিসগুলি সহজ রাখতে চাই, যতক্ষণ না এটি পুরোপুরি পরিষ্কার হয়ে যায় যে অ্যাপটির একেবারে এক্স আর্কিটেকচার বাস্তবায়ন করা দরকার। আরও বিস্তারিত তথ্যের জন্য এই উত্তরটি দেখুন: প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জিং
ওয়াল্টার

4

আমরা আমাদের .NET 2.0 উইনফর্ম অ্যাপ্লিকেশনগুলিতে এমভিপির একটি পরিবর্তিত ফর্ম ব্যবহার করি। আমরা যে দুটি টুকরো মিস করছি তা হ'ল ডাব্লুপিএফ ভিউমোডেলের একটি পরিবর্তিত অ্যাডাপ্টার এবং ডেটা বন্ডিং যুক্ত করা। আমাদের নির্দিষ্ট প্যাটার্নটি এমভিপিভিএম।

আমরা প্রায় প্রতিটি ক্ষেত্রে উপস্থাপক-প্রথম হিসাবে তারে থাকি, কাস্টম ব্যবহারকারীর নিয়ন্ত্রণগুলি বাদ দিয়ে, যা ডিজাইনার বন্ধুত্বের জন্য ভিউ-ফার্স্টে তারযুক্ত w আমরা নির্ভরতা ইনজেকশন, কোড-উত্পন্ন ভিউমোডেলস, উপস্থাপকদের জন্য বিডিডি এবং মডেলের জন্য টিডিডি / টেড ব্যবহার করি।

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

ভিএম কখনও না পারে এমন জিনিসগুলি সম্পাদন করার জন্য ভিউয়ের মাঝে মাঝে পদ্ধতি থাকে। এটি সাধারণত আইটেমগুলির দৃশ্যমানতা নিয়ন্ত্রণ করে (উইনফর্মগুলি এটি সম্পর্কে পছন্দসই হতে পারে), এবং যে জিনিসগুলি ডাটাবাউন্ড হতে অস্বীকার করে। ভিউটি সর্বদা "লগইন" বা "পুনঃসূচনা" এর মতো ইভেন্টগুলি ব্যবহার করে ব্যবহারকারীর আচরণের জন্য যথাযথ ইভেন্টআর্গস সহ প্রকাশ করে। যদি না আমাদের "ভিউ.শো লোগিনবক্স" এর মতো একটি হ্যাক ব্যবহার না করে, সাধারণ ডিজাইনের প্রয়োজনীয়তা পূরণ না করা হয় ততক্ষণ ভিউটি সম্পূর্ণরূপে বিনিময়যোগ্য।

এই প্যাটার্নটি কমাতে আমাদের প্রায় 6-8 মাস সময় লেগেছে। এটিতে অনেক টুকরো রয়েছে তবে এটি অত্যন্ত নমনীয় এবং অত্যন্ত শক্তিশালী। আমাদের সুনির্দিষ্ট বাস্তবায়ন খুব অ্যাসিনক্রোনাস এবং ইভেন্ট-চালিত, যা নকশা আচরণের পার্শ্ব-প্রতিক্রিয়া না হয়ে কেবল অন্যান্য প্রয়োজনীয়তার একটি শৈল্পিক হতে পারে। উদাহরণস্বরূপ, আমি বেসক্লাসের সাথে থ্রেড সিঙ্ক্রোনাইজেশন যুক্ত করেছি যা আমাদের ভিএম এর উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছে (যা ইভেন্টটি উত্থাপন করার জন্য একটি অনপ্রোপার্টিচেনজড পদ্ধতিটি সহজেই উদ্ঘাটিত করেছিল) - এবং ছমছা, এখন আমরা মাল্টিথ্রেডেড উপস্থাপক এবং মডেলগুলি রাখতে পারি।


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

হ্যাঁ, আমাকে একটি উদাহরণ শেষ করতে দিন। এটি আমাদের ব্যবসায়ের দিকে সামান্য তৈরি করা হবে, যেহেতু আমি এটিকে অভ্যন্তরীণ প্রশিক্ষণের সরঞ্জাম হিসাবে ব্যবহার করছি।
ব্রায়ান বোয়েচার

আপনাকে ধন্যবাদ, আমি সপ্তাহান্তে এটি সন্ধান করব আমি এটি বুঝতে পারি কিনা তা দেখার জন্য
জনউইলিস

@ ইনস্টা - লিঙ্কটি নিচে রয়েছে, আপনি কোথাও এটি আবার আপলোড করতে পারবেন?
ইয়ভেস শেল্পে

1
ক্র্যাপ আমি ঠিক এক সপ্তাহ আগে এটি মুছে ফেলেছি। চিত্রসমূহ :(
ব্রায়ান বোয়েচার

2

আমি পিওরএমভিসি এর একটি সংস্করণ ব্যবহার করছি যা। নেট এর জন্য সংশোধন করা হয়েছে এবং তারপরে নিজেই প্রসারিত করেছি।

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

আমি এটি সহ নিম্নলিখিত স্বাধীনতা গ্রহণ:

  • প্রতিবিম্বটি ব্যবহার করে আমি ফর্ম শ্রেণিতে যেতে এবং আমি মধ্যস্থতা করছি এমন প্রতিটি নিয়ন্ত্রণের (ব্যক্তিগত) রেফারেন্স দখল করতে ভিউ-মধ্যস্থতাকারীর ব্যক্তিগত সম্পত্তি পেতে সক্ষম হয়েছি।
  • প্রতিবিম্ব ব্যবহার করে আমি আমার মধ্যস্থতার ইভেন্টের স্বাক্ষরে নিয়ন্ত্রণগুলি অটো-ওয়্যার করতে পারি, যা জেনেরিক হয়, তাই আমি কেবল প্রেরকের পরামিতিটি স্যুইচ করি।
  • সাধারণত, পিওরএমভিসি সূচিত মধ্যস্থতাকারীদের একটি ফাংশনে তাদের বিজ্ঞপ্তি আগ্রহগুলি সংজ্ঞায়িত করতে চায় যা স্ট্রিংগুলির একটি অ্যারে ফিরিয়ে দেবে। যেহেতু আমার আগ্রহগুলি বেশিরভাগ স্থিতিশীল, এবং আমি মধ্যস্থতাকারীদের আগ্রহগুলি দেখার সহজ উপায় পেতে চাই, তাই আমি একটি পরিবর্তন করেছি যাতে মধ্যস্থতাকারী একটি নির্দিষ্ট স্বাক্ষর সহ সদস্যের ভেরিয়েবল সেট করেও তার আগ্রহগুলি ঘোষণা করতে পারে: _ _ _ <শ্রেণিকাম> _ <নোটিফিকেশন- নাম>। এই পদ্ধতিতে আমি দেখতে পাচ্ছি কোনও ফাংশনের ভিতরে না গিয়ে আইডিই সদস্য গাছটি কী ব্যবহার করছে।

পিওরএমভিসিতে, আপনি কমান্ডটি এন্ট্রি পয়েন্ট হিসাবে ব্যবহার করতে পারেন, একটি সাধারণ স্টার্ট কমান্ড মডেলটিকে তার পরিমাণে সেট করতে পারে, তারপরে মেইনফর্ম তৈরি করে, সেই ফর্মটির জন্য মধ্যস্থতাকে তৈরি এবং নিবন্ধন করে, তারপরে অ্যাপ্লিকেশন করুন।আর ফর্ম উপর।

ফর্মটির মধ্যস্থতাকারী সমস্ত উপ-মধ্যস্থতাকারী স্থাপনের জন্য দায়বদ্ধ, এর মধ্যে কিছু প্রতিচ্ছবি কৌশল ব্যবহার করে আবার স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে।

আমি যে সিস্টেমটি ব্যবহার করছি তা হ'ল টানা / ড্রপ সামঞ্জস্যপূর্ণ, যদি আমি আপনার অর্থ বুঝতে পারি। আসল ফর্মটি সবগুলি ভিএস-তে তৈরি করা হয়েছে, তবে আমার অভিজ্ঞতা কেবলমাত্র এমন ফর্মগুলির সাথে যা স্থিরভাবে নিয়ন্ত্রণ তৈরি করেছে। গতিশীলভাবে তৈরি মেনু আইটেমগুলির মতো জিনিসগুলি সেই মেনু বা সাবমেনুর জন্য মধ্যস্থতার কিছুটা টুইট করার মাধ্যমে व्यवहार्य মনে হয়। এটি যখন লোমশ হয়ে উঠবে তখন মধ্যস্থতাকারীর কাছে কোনও স্থির মূল উপাদান ছিল না এবং আপনি গতিশীল 'দৃষ্টান্ত' মধ্যস্থতাকারী তৈরি করতে সক্ষম হন।

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