আমি অতীতে এমভিপি এবং এমভিসি ব্যবহার করেছি এবং আমি এমভিপি পছন্দ করি কারণ এটি আমার মতে মৃত্যুদন্ড কার্যকর করার প্রবাহকে আরও ভালভাবে নিয়ন্ত্রণ করে।
আমি আমার অবকাঠামো তৈরি করেছি (ডাটাস্টোর / সংগ্রহশালা ক্লাস) এবং যখন নমুনা ডেটা হার্ড কোডিংয়ের সময় সমস্যা ছাড়াই এগুলি ব্যবহার করি, তাই এখন আমি জিইআইতে চলে যাচ্ছি এবং আমার এমভিপি প্রস্তুত করছি।
অধ্যায় একটি
আমি এমভিপিটি ভিউটি এন্ট্রি পয়েন্ট হিসাবে ব্যবহার করে দেখেছি, এটি ভিউ কনস্ট্রাক্টর পদ্ধতিতে এটি উপস্থাপক তৈরি করে, যার ফলে মডেল তৈরি হয়, প্রয়োজন অনুযায়ী ইভেন্টগুলি ওয়্যারিং করে।
আমি উপস্থাপককে এন্ট্রি পয়েন্ট হিসাবেও দেখেছি, যেখানে একটি ভিউ, মডেল এবং উপস্থাপক তৈরি করা হয়, এই উপস্থাপককে তার ইভেন্টে তারের জন্য তার কনস্ট্রাক্টরে একটি ভিউ এবং মডেল অবজেক্ট দেওয়া হয়।
2 হিসাবে, কিন্তু মডেলটি উপস্থাপকের কাছে যায় না। পরিবর্তে মডেলটি একটি স্ট্যাটিক শ্রেণি যেখানে পদ্ধতিগুলি বলা হয় এবং প্রতিক্রিয়াগুলি সরাসরি ফিরে আসে।
বিভাগ বি
দৃষ্টিভঙ্গি এবং মডেল সিঙ্কে রাখার ক্ষেত্রে আমি দেখেছি।
যখনই ভিউতে কোনও মান পরিবর্তিত হয়, অর্থাত্
TextChanged
নেট। / সি # তে ইভেন্ট। এটিDataChangedEvent
সর্বদা সিঙ্কে রাখার জন্য এটি মডেলটির মধ্য দিয়ে যায় fire এবং যেখানে মডেলটি পরিবর্তিত হয়, অর্থাত্ একটি পটভূমি ইভেন্ট এটি শোনায়, তারপরে ভিউ একটি উত্থাপনের একই ধারণার মাধ্যমে আপডেট করা হয়DataChangedEvent
। যখন কোনও ব্যবহারকারী কোনও পরিবর্তন করতে চায় তবেSaveEvent
তা সংরক্ষণ করে মডেলটির মধ্যে দিয়ে সেভ করে তোলে। এই ক্ষেত্রে মডেলটি ভিউটির ডেটা নকল করে এবং ক্রিয়াগুলি প্রক্রিয়া করে।# বি 1 এর মতো, তবে ভিউটি সমস্ত সময় মডেলটির সাথে সিঙ্ক হয় না। পরিবর্তে যখন ব্যবহারকারী পরিবর্তন করতে চায়,
SaveEvent
বরখাস্ত করা হয় এবং উপস্থাপক সর্বশেষ বিবরণটি ধরেন এবং এগুলি মডেলটিতে প্রেরণ করেন। এক্ষেত্রে মডেলটি ভিউ ডেটা সম্পর্কে জানতে না পারে যতক্ষণ না তার উপর কাজ করার প্রয়োজন হয়, এই ক্ষেত্রে এটি সমস্ত প্রয়োজনীয় বিবরণটি পাস করা হয়।
বিভাগ সি
ভিউতে ব্যবসায়িক সামগ্রীর প্রদর্শন, যেমন একটি বস্তু (মাইক্লাস) আদিম ডেটা নয় (অন্তর্গত, ডাবল)
ভিউয়ের সমস্ত ডেটার জন্য সম্পত্তি ক্ষেত্র রয়েছে যা এটি ডোমেন / ব্যবসায়িক অবজেক্ট হিসাবে প্রদর্শিত হবে। যেমন
view.Animals
কোনওIEnumerable<IAnimal>
সম্পত্তি প্রকাশ করে , যদিও ভিউটি একটি ট্রিউউউতে নোডগুলিতে প্রসেস করে। তারপরে নির্বাচিত প্রাণীর জন্য এটি সম্পত্তিSelectedAnimal
হিসাবে প্রকাশ করবেIAnimal
।ভিউটিতে ডোমেন অবজেক্টের কোনও জ্ঞান নেই, এটি আদিম / কাঠামো (। নেট / জাভা) এর জন্য সম্পত্তি যুক্ত করে কেবলমাত্র বস্তুর ধরণের অন্তর্ভুক্ত। এই উদাহরণস্বরূপ উপস্থাপক একটি অ্যাডাপ্টার বস্তুকে ডোমেন অবজেক্টটি পাস করবেন, অ্যাডাপ্টার তারপরে একটি প্রদত্ত ব্যবসায়ের বস্তুকে ভিউতে দৃশ্যমান নিয়ন্ত্রণগুলিতে অনুবাদ করবে। এই উদাহরণস্বরূপ অ্যাডাপ্টারের অবশ্যই দৃশ্যের আসল নিয়ন্ত্রণগুলিতে অ্যাক্সেস থাকতে হবে, কেবল কোনও ভিউ নয় তাই আরও দৃly়তার সাথে মিলিত হয়।
বিভাগ ডি
একক নিয়ন্ত্রণ তৈরি করতে একাধিক দর্শন। অর্থাৎ বিভিন্ন ধরণের অবজেক্টগুলি সংরক্ষণ করার মতো সাধারণ মডেলের সাথে আপনার জটিল দৃষ্টিভঙ্গি রয়েছে। আপনার আইটেমের প্রতিটি ক্লিকের সাথে যথাযথ নিয়ন্ত্রণগুলি প্রদর্শিত হচ্ছে পাশাপাশি আপনি একটি মেনু সিস্টেম রাখতে পারেন।
আপনি একটি বিশাল ভিউ তৈরি করেন, এতে সমস্ত পৃথক নিয়ন্ত্রণ থাকে যা ভিউজ ইন্টারফেসের মাধ্যমে উন্মুক্ত হয়।
আপনার বেশ কয়েকটি মতামত রয়েছে। আপনার মেনু এবং একটি ফাঁকা প্যানেলের জন্য একটি ভিউ রয়েছে। এই ভিউটি অন্যান্য প্রয়োজনীয় ভিউগুলি তৈরি করে তবে সেগুলি প্রদর্শন করে না (দৃশ্যমান = মিথ্যা), এই ভিউটিতে এটি প্রতিটি দর্শন (যেমন শিশু দর্শন) রয়েছে তার ইন্টারফেসও প্রয়োগ করে যাতে এটি কোনও উপস্থাপকের কাছে প্রকাশ করতে পারে। ফাঁকা প্যানেলটি অন্যান্য দর্শন (
Controls.Add(myview)
) এবং ((myview.visible = true
) দিয়ে পূর্ণ । এই "শিশু" - দর্শনগুলিতে উত্থাপিত ইভেন্টগুলি পিতামাতার দৃশ্যের দ্বারা পরিচালিত হয় যা ফলস্বরূপ ইভেন্টটিকে উপস্থাপকের কাছে প্রেরণ করে এবং ভিসার বিপরীতে ইভেন্টগুলি শিশু উপাদানগুলিতে সরবরাহ করে।প্রতিটি দর্শন, এটি প্রধান পিতা বা ছোট শিশু দৃষ্টিভঙ্গি প্রতিটি সেখানে নিজস্ব উপস্থাপক এবং মডেলটিতে তারযুক্ত হয়। আপনি অক্ষরে অক্ষরে কেবল একটি বিদ্যমান ফর্মের মধ্যে একটি নিয়ন্ত্রণ নিয়ন্ত্রণ ফেলে দিতে পারেন এবং এটির কার্যকারিতা প্রস্তুত থাকবে, কেবল পর্দার পিছনে উপস্থাপকের মধ্যে তারের প্রয়োজন।
বিভাগ E
উপরের উদাহরণগুলিতে এমভিপি কীভাবে করা হয়েছে তার উপর ভিত্তি করে এখন সব কিছুর ইন্টারফেস থাকতে হবে কারণ তারা ক্রস-সামঞ্জস্যপূর্ণ নাও হতে পারে।
সবকিছুর একটি ইন্টারফেস, ভিউ, উপস্থাপক এবং মডেল রয়েছে। এগুলির প্রত্যেকেরই অবশ্যই একটি দৃ a় বাস্তবায়ন রয়েছে। এমনকি যদি আপনার কাছে কেবল একটি কংক্রিট ভিউ, মডেল এবং উপস্থাপক থাকে।
ভিউ এবং মডেলের একটি ইন্টারফেস রয়েছে। এটি দর্শন এবং মডেলগুলিকে পৃথক করতে দেয়। উপস্থাপক তৈরি / প্রদত্ত ভিউ এবং মডেল অবজেক্ট তৈরি করে এবং এটি কেবল তাদের মধ্যে বার্তা প্রেরণ করে।
শুধুমাত্র ভিউয়ের একটি ইন্টারফেস রয়েছে। মডেলটির স্থিতিশীল পদ্ধতি রয়েছে এবং এটি তৈরি হয় না, সুতরাং ইন্টারফেসের প্রয়োজন হয় না। আপনি যদি অন্য কোনও মডেল চান, উপস্থাপক স্ট্যাটিক শ্রেণির পদ্ধতিগুলির একটি আলাদা সেট কল করে। অবিচল হওয়া মডেলটির উপস্থাপকের কোনও লিঙ্ক নেই।
ব্যক্তিগত চিন্তা
আমি উপস্থাপিত সমস্ত বিভিন্ন প্রকারের থেকে (বেশিরভাগ ক্ষেত্রে আমি সম্ভবত কিছু ফর্ম ব্যবহার করেছি) যার মধ্যে আমি নিশ্চিত যে আরও কিছু আছে। আমি কম এমপিপি, বি 2 এর বাইরে ব্যবসায়ের যুক্তি পুনরায় ব্যবহারযোগ্য হিসাবে ডেটা নকলকরণ এবং কম ইভেন্টগুলিকে বরখাস্ত করার জন্য এ 3 কে পছন্দ করি। অন্য শ্রেণিতে যোগ না করার জন্য সি 1, নিশ্চিত যে এটি একটি অল্প পরিমাণে নন ইউনিট পরীক্ষামূলক যুক্তিকে একটি দৃষ্টিতে রাখে (কোনও ডোমেন অবজেক্টটি কীভাবে দৃশ্যমান হয়) তবে এটি পর্যালোচনা কোড, বা কেবল অ্যাপ্লিকেশনটিতে দেখা যেতে পারে। যুক্তিটি যদি জটিল ছিল তবে আমি অ্যাডাপ্টার শ্রেণিতে সম্মত হব তবে সব ক্ষেত্রেই নয় not বিভাগ ডি এর জন্য, আমি অনুভব করি যে ডি 1 একটি মেনু উদাহরণের জন্য কমপক্ষে একটি ভিউ তৈরি করে। আমি এর আগে ডি 2 এবং ডি 3 ব্যবহার করেছি। ডি 2 এর সমস্যাটি হ'ল আপনি উপস্থাপক থেকে সঠিক শিশু দর্শনে ইভেন্টগুলি রুট করার জন্য প্রচুর কোড লিখতে পেরেছেন এবং এটি ড্র্যাগ / ড্রপ সামঞ্জস্যপূর্ণ নয়, একক উপস্থাপককে সমর্থন করতে প্রতিটি নতুন নিয়ন্ত্রণের আরও বেশি তারের প্রয়োজন। ডি 3 আমার পছন্দসই পছন্দ তবে ভিউটি খুব সাধারণ বলে মনে হয় বা পুনরায় ব্যবহার করার প্রয়োজন না থাকলেও ভিউটি মোকাবেলা করার জন্য উপস্থাপক এবং মডেল হিসাবে আরও ক্লাসে যোগ করে। আমি মনে করি D2 এবং D3 এর মিশ্রণ পরিস্থিতি ভিত্তিতে সবচেয়ে ভাল। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি। আমি মনে করি D2 এবং D3 এর মিশ্রণটি পরিস্থিতি অনুসারে সেরা। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি। আমি মনে করি D2 এবং D3 এর মিশ্রণটি পরিস্থিতি অনুসারে সেরা। ই বিভাগে, আমি মনে করি যে ইন্টারফেস থাকা প্রতিটি জিনিসই ওভারকিল হতে পারে আমি ইতিমধ্যে এটি ডোমেন / ব্যবসায়িক অবজেক্টগুলির জন্য করি এবং প্রায়শই এটি করে "নকশায়" কোনও লাভ দেখি না, তবে এটি পরীক্ষাগুলিতে অবজ্ঞাত বস্তুকে উপহাস করতে সহায়তা করে। ব্যক্তিগতভাবে আমি E2 কে ক্লাসিক সমাধান হিসাবে দেখতে পাবো, যদিও ইতিমধ্যে 2 টি প্রকল্পে E3 ব্যবহার করা দেখেছি।
প্রশ্ন
আমি কি এমভিপি সঠিকভাবে প্রয়োগ করছি? এটি সম্পর্কে কোন সঠিক উপায় আছে?
আমি মার্টিন ফোলারের কাজ পড়েছি যার বিভিন্নতা রয়েছে এবং আমি মনে করি আমি যখন প্রথম এমভিসি করা শুরু করলাম তখন ধারণাটি বুঝতে পেরেছিলাম, তবে প্রবেশের পয়েন্টটি কোথায় রয়েছে তা মূলত কাজ করতে পারিনি, সমস্ত কিছুর নিজস্ব ফাংশন রয়েছে তবে কী নিয়ন্ত্রণ করে এবং আসলটি তৈরি করে এমভিসি অবজেক্টের সেট।