এমভিসি বা মডেল-ভিউ-কন্ট্রোলার খুবই জনপ্রিয় একটি প্যাটার্ন । Trygve Reenskaug নামের এক ভদ্রলোক এই প্যাটার্নটির
জনক। এমভিসি প্যাটার্নের মূল বক্তব্য হলো এই প্যাটার্নে তিনটি
কম্পোনেন্ট থাকবে – একটি মডেল যেটি ডাটা নিয়ে কাজ করবে, একটি ভিউ যেটার
কাজ হবে মডেলকে ভিজ্যুয়ালাইজ করা এবং একটি কন্ট্রোলার যেটি ব্যবহারকারী
এবং সিস্টেমের মধ্য সমন্বয়কারী হিসেবে কাজ করে ।
আমরা যদি এমভিসি কম্পোনেন্টগুলোর দিকে নজর দেই তাহলে দেখবো –
মডেল: মডেলের কাজই হলো ডাটা নিয়ে কাজ করা । মডেল হতে
পারে একটি অবজেক্ট কিংবা অনেকগুলো অবজেক্ট এর একটি স্ট্রাকচার । একটি
সিস্টেমের সব ধরণের নলেজ বা ডাটা মডেল দিয়ে রিপ্রেজেন্ট করা যায় ।
ক্ষেত্রবিশেষে মডেল তার অবস্থা পরিবর্তন হলে (যেমন: কোন ভ্যালুর মান পাল্টে
গেলে) কন্ট্রোলার বা ভিউকে নোটিফাই করে যাতে প্রয়োজনীয় প্রসেসিং করা
সম্ভব হয় । ওয়েবে সাধারণত এ ধরণের নোটিফিকেশন এর সুযোগ থাকে না ।
ভিউ: ভিউ এর কাজ হচ্ছে মডেলকে ব্যবহারকারীর সামনে তুলে
ধরা । সাধারণত ভিউ মডেল থেকে ডাটা নিয়ে সেটাকে ব্যবহারকারীর কাছে
সহজবোধ্য রূপে তুলে ধরে ।
কন্ট্রোলার: কন্ট্রোলার ব্যবহারকারীর কাছ থেকে তথ্য
সংগ্রহ করে আবার ব্যবহারকারীর প্রয়োজনমত ভিউ উপস্থাপন করে । কন্ট্রোলারই
বলে দেয় ভিউ কোন মডেল থেকে ডাটা নিয়ে কিভাবে উপস্থাপন করবে । এছাড়াও
কন্ট্রোলার মডেলে নানা ধরণের পরিবর্তন করতে পারে প্রয়োজনমত ।
আমরা যদি জনপ্রিয় পিএইচপি ফ্রেমওয়ার্ক চিন্তা করি তাহলে দেখবো –
# মডেল অবজেক্টগুলো সরাসরি ডাটাবেইজের টেবিলকে রিপ্রেজেন্ট করে । একেকটি
মডেল ব্যবহার করে আমরা একেক টেবিল থেকে ডাটা এ্যাক্সেস করতে পারি ।
# ভিউ থাকে এইচটিএমএল এর মত বিশেষ টেম্প্লেট যেটা জানে কিভাবে এইচটিএমএল কোড আউটপুট করতে হবে ।
# কন্ট্রোলার অবজেক্টগুলো ব্যবহারকারীর ইচ্ছামত প্রয়োজনীয় মডেল থেকে ডাটা এনে ভিউ তৈরি করে দেয় ।
কি করে বুঝবেন যে আপনার এ্যাপ্লিকেশনটি সঠিকভাবে এমভিসি প্যাটার্ন
অনুসরণ করছে? নিজেকে জিজ্ঞাসা করুন এই এ্যাপ্লিকেশনটি থীমেবল কিনা । অর্থাৎ
চাইলেই আপনি এটির জন্য অনেকগুলো থীম তৈরি করে ডাইনামিকালি থীম পরিবর্তন
করতে পারছেন কিনা । যদি সেটা সম্ভব হয় তবে সম্ভবত আপনি সঠিকভাবেই এমভিসি
ফলো করেছেন আর যদি সম্ভব না হয় তবে আপনি এমভিসি কম্পোনেন্টগুলোকে আলাদা
করতে পারেননি ঠিকমতো ।