সমস্যাটি MVC
হ'ল লোকেরা মনে করে যে দেখুন, নিয়ন্ত্রণকারী এবং মডেলটিকে একে অপরের থেকে যথাসম্ভব স্বতন্ত্র হতে হবে। তারা না - একটি দৃশ্য এবং নিয়ামক প্রায়ই বিজড়িত হয় - হিসাবে মনে M(VC)
।
নিয়ন্ত্রক হ'ল ব্যবহারকারী ইন্টারফেসের ইনপুট প্রক্রিয়া, যা প্রায়শই ভিউতে জড়িত হয়, বিশেষত জিইউআই সহ। তবুও, ভিউ আউটপুট এবং নিয়ামক ইনপুট। একটি দৃশ্য প্রায়শই সম্পর্কিত নিয়ামক ছাড়া কাজ করতে পারে, তবে একটি নিয়ামক একটি ভিউ ছাড়া সাধারণত কম কম কার্যকর। ব্যবহারকারী-বান্ধব নিয়ন্ত্রণকারীরা ব্যবহারকারীর ইনপুটটিকে আরও অর্থবহ, স্বজ্ঞাত ফ্যাশনে ব্যাখ্যা করতে ভিউটি ব্যবহার করে। এটিই এটিকে শক্তিশালী করে কনট্রোলার ধারণাটিকে ভিউ থেকে পৃথক করে।
মডেল হিসাবে সিল করা বাক্সে সনাক্তকরণের ক্ষেত্রের একটি রেডিও-নিয়ন্ত্রিত রোবটটিকে ভাবুন।
মডেলটি হ'ল আউটপুট (প্রদর্শন) বা রাষ্ট্রীয় রূপান্তরগুলি কী ঘটায় তা নিয়ে কোনও ধারণা ছাড়াই রাষ্ট্র ও রাজ্য স্থানান্তর সম্পর্কে। আমি মাঠে রোবটের অবস্থান পেতে পারি এবং রোবট কীভাবে স্থানান্তরিত করতে হয় তা জানতে পারে (কীভাবে একটি পদক্ষেপ এগিয়ে / পিছনে / বাম / ডানদিকে নেয় a
নিয়ামকবিহীন একটি দৃশ্যের কথা চিন্তা করুন, উদাহরণস্বরূপ, অন্য ঘরে নেটওয়ার্কের অন্য ঘরে কোনও ব্যক্তি রোবট অবস্থানটি (x, y) হিসাবে স্ক্রলিং কনসোলকে স্ট্রিমিং স্থানাঙ্ক হিসাবে দেখছে। এই দৃশ্যটি কেবলমাত্র মডেলের অবস্থা প্রদর্শন করছে, কিন্তু এই লোকটির কোনও নিয়ামক নেই। আবার কোনও নিয়ামক ছাড়াই এই দৃশ্যটি কল্পনা করা সহজ।
কোনও দৃশ্যবিহীন নিয়ামক হিসাবে ভাবুন, উদাহরণস্বরূপ, কেউ রোবটের ফ্রিকোয়েন্সি অনুসারে রেডিও কন্ট্রোলারের সাথে একটি পায়খানাতে লক হয়েছে। এই নিয়ামকটি ইনপুট প্রেরণ করছে এবং তারা মডেলটির সাথে কী করছে (কোনও কিছু হলে) কোনও ধারণা ছাড়াই রাষ্ট্রীয় রূপান্তর ঘটায়। কল্পনা করা সহজ, তবে ভিউ থেকে কোনও ধরণের প্রতিক্রিয়া ছাড়াই সত্যই কার্যকর নয়।
বেশিরভাগ ব্যবহারকারী-বান্ধব ইউআই এর অধিকতর স্বজ্ঞাত ইউজার ইন্টারফেস সরবরাহ করতে নিয়ামকের সাথে দৃশ্যের সমন্বয় করে। উদাহরণস্বরূপ, কোনও টাচ-স্ক্রিন সহ এমন একটি ভিউ / নিয়ামক কল্পনা করুন যা 2-ডি-তে রোবটের বর্তমান অবস্থানটি দেখায় এবং ব্যবহারকারীকে স্ক্রিনের সেই বিন্দুটি স্পর্শ করতে দেয় যা কেবল রোবটের সামনে উপস্থিত হয়। কন্ট্রোলারের ভিউ সম্পর্কে বিশদ প্রয়োজন, যেমন ভিউপোর্টের অবস্থান এবং স্কেল এবং স্ক্রিনের রোবটের পিক্সেল অবস্থানের সাথে স্পটটির পিক্সেল অবস্থান স্পর্শ করা) এটি সঠিকভাবে ব্যাখ্যা করতে (পায়খানাটিতে লক করা লোকটির বিপরীতে) রেডিও নিয়ন্ত্রণকারী)।
আমি কি আপনার প্রশ্নের উত্তর দিয়েছি? :-)
নিয়ামক হ'ল এমন কিছু যা ব্যবহারকারীর কাছ থেকে ইনপুট নেয় যা মডেলকে রূপান্তর অবস্থায় আনতে ব্যবহৃত হয়। ভিউ এবং কন্ট্রোলারকে আলাদা করার চেষ্টা করুন, তবে বুঝতে পারেন যে তারা প্রায়শই একে অপরের উপর নির্ভরশীল, তাই যদি ঠিক হয় যে তাদের মধ্যে সীমাটি অস্পষ্ট, অর্থাত্ পৃথক প্যাকেজ হিসাবে দৃষ্টিভঙ্গি এবং নিয়ামক রাখা আপনার মতো পরিষ্কারভাবে আলাদা নাও হতে পারে পছন্দ, কিন্তু ঠিক আছে। মডেল থেকে দেখা হওয়ায় আপনাকে নিয়ামকটি পরিষ্কারভাবে ভিউ থেকে পৃথক করা হবে না তা গ্রহণ করতে হতে পারে have
... কোন বৈধতা ইত্যাদি নিয়ামক মধ্যে করা উচিত? যদি তা হয়, তবে আমি কীভাবে ত্রুটি বার্তাগুলির প্রতিক্রিয়া জানব সেগুলিতে - কী আবার মডেলটির মধ্য দিয়ে যাওয়া উচিত, বা কন্ট্রোলারকে কেবল এটি সরাসরি দেখার জন্য প্রেরণ করা উচিত?
যদি ভিউতে বৈধতা হয় তবে আমি কন্ট্রোলারে কী রাখি?
আমি বলছি একটি লিঙ্কযুক্ত ভিউ এবং নিয়ন্ত্রকের মডেলটির মধ্য দিয়ে না গিয়ে অবাধে যোগাযোগ করা উচিত। কন্ট্রোলার ব্যবহারকারীর ইনপুট নেয় এবং যাচাই করা উচিত (সম্ভবত মডেল এবং / অথবা ভিউ থেকে তথ্য ব্যবহার করে), তবে যদি বৈধতা ব্যর্থ হয়, তবে নিয়ামকটি সরাসরি তার সম্পর্কিত ভিউ আপডেট করতে সক্ষম হবেন (যেমন ত্রুটি বার্তা)।
এর জন্য অ্যাসিড পরীক্ষাটি নিজেকে জিজ্ঞাসা করা হয় যে কোনও স্বতন্ত্র দৃষ্টিভঙ্গি (যেমন অন্য রুমের লোকটি নেটওয়ার্কের মাধ্যমে রোবোটের অবস্থানটি দেখছে) অন্য কারও বৈধতা ত্রুটির ফলে কিছু দেখতে পাওয়া উচিত কিনা (যেমন পায়খানাটির লোক মাঠ থেকে সরে যেতে রোবটকে বলার চেষ্টা করেছিলেন)। সাধারণত, উত্তরটি হ'ল না - বৈধতা ত্রুটি রাষ্ট্রের উত্তরণকে বাধা দেয়। যদি কোনও রাষ্ট্রীয় ট্রানিসিশন না থাকে (রোবটটি সরেনি), অন্য দৃষ্টিভঙ্গি বলার দরকার নেই। কক্ষের লোকটি কেবল কোনও প্রতিক্রিয়া পেল না যে সে একটি অবৈধ ট্রানজিশন ঘটানোর চেষ্টা করেছিল (কোনও দৃষ্টিকোণ নয় - খারাপ ব্যবহারকারীর ইন্টারফেস), এবং অন্য কারওও এটি জানার প্রয়োজন নেই।
টাচস্ক্রিনযুক্ত লোকটি যদি রোবটটি মাঠের বাইরে পাঠানোর চেষ্টা করে, তবে তিনি একটি দুর্দান্ত ব্যবহারকারীর বন্ধুত্বপূর্ণ বার্তা পেয়েছিলেন যাতে তিনি সনাক্তকরণের ক্ষেত্রটি পাঠিয়ে রোবটটিকে হত্যা করবেন না, তবে আবার কারও কাছে এটি জানার দরকার নেই।
অন্যান্য দর্শনে যদি না এই ত্রুটিগুলি সম্পর্কে জানা প্রয়োজন, তাহলে আপনি কার্যকরভাবে বলছে যে ব্যবহারকারীর কাছ থেকে ইনপুট এবং কোন ফলে ত্রুটি আছে মডেলর কোনো অংশ এবং গোটা ব্যাপারটাই একটু বেশি জটিল ...