আমার অভিজ্ঞতায়, একটি traditionalতিহ্যবাহী ডেস্কটপ এমভিসি গুই প্রোগ্রামে, নিয়ামকটি স্প্যাগেটিড ভিউতে শেষ হয়। বেশিরভাগ লোক একটি নিয়ামক শ্রেণীর উপাদান নির্ধারণে সময় নেয় না।
স্মলটাক এমভিসিতে নকশার প্যাটার্নস
ক্লাসের মডেল / ভিউ / কন্ট্রোলার (এমভিসি) ত্রিভাড়া [কেপি ৮৮] স্মার্টটাক -৮০ এ ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। এমভিসির অভ্যন্তরে নকশার নিদর্শনগুলি দেখার জন্য আপনাকে "প্যাটার্ন" শব্দটি বলতে কী বোঝায় তা বুঝতে সহায়তা করা উচিত।
এমভিসিতে তিন ধরণের অবজেক্ট থাকে। মডেলটি হ'ল অ্যাপ্লিকেশন অবজেক্ট, ভিউটি এর স্ক্রিন উপস্থাপনা এবং কন্ট্রোলার ইউজার ইনপুটটিতে ব্যবহারকারী ইন্টারফেসের প্রতিক্রিয়া দেখায়। এমভিসির আগে, ইউজার ইন্টারফেস ডিজাইনগুলি এই বিষয়গুলিকে একসাথে একসাথে রাখে। এমভিসি তাদের নমনীয়তা এবং পুনঃব্যবহার বৃদ্ধির জন্য ডিকুপল করে।
এমভিসি তাদের মধ্যে একটি সাবস্ক্রাইব / বিজ্ঞপ্তি প্রোটোকল স্থাপনের দ্বারা ভিউ এবং মডেলগুলিকে ডিউপল করে। একটি দৃশ্যের অবশ্যই নিশ্চিত হওয়া উচিত যে এর উপস্থিতি মডেলটির অবস্থা প্রতিফলিত করে। যখনই মডেলের ডেটা পরিবর্তন হয়, মডেল তার উপর নির্ভরশীল এমন দর্শনগুলি অবহিত করে। প্রতিক্রিয়া হিসাবে, প্রতিটি দর্শন নিজের আপডেট করার সুযোগ পায়। এই পদ্ধতির সাহায্যে আপনাকে বিভিন্ন উপস্থাপনা সরবরাহ করতে এক মডেলের একাধিক ভিউ সংযুক্ত করতে দেয়। আপনি কোনও মডেল পুনর্লিখন না করে নতুন দর্শন তৈরি করতে পারেন।
নিম্নলিখিত চিত্রটি একটি মডেল এবং তিনটি দর্শন দেখায়। (আমরা সরলতার জন্য কন্ট্রোলারগুলি বাদ দিয়েছি)) মডেলটিতে কিছু ডেটা মান রয়েছে এবং একটি স্প্রেডশিট, হিস্টোগ্রাম এবং পাই চার্ট সংজ্ঞায়িত করা ভিউগুলি বিভিন্ন উপায়ে এই ডেটাগুলি প্রদর্শন করে। মডেলটির মানগুলি পরিবর্তিত হওয়ার সাথে সাথে তার দৃষ্টিভঙ্গিগুলির সাথে যোগাযোগ করে এবং মানগুলি এই মানগুলি অ্যাক্সেস করতে মডেলটির সাথে যোগাযোগ করে।
মুখের মান ধরে নেওয়া, এই উদাহরণটি এমন একটি নকশাকে প্রতিফলিত করে যা মডেলগুলি থেকে দর্শনগুলি decouples করে। তবে নকশাটি আরও সাধারণ সমস্যার ক্ষেত্রে প্রযোজ্য: বস্তুগুলি ডিকপলিং করা যাতে একটিতে পরিবর্তনগুলি অন্যের বিশদ জানতে তার পরিবর্তিত অবজেক্টের প্রয়োজন ছাড়াই অন্য যে কোনও সংখ্যাকে প্রভাবিত করতে পারে। এই আরও সাধারণ নকশা পর্যবেক্ষক (পৃষ্ঠা 293) নকশা প্যাটার্ন দ্বারা বর্ণনা করা হয়।
এমভিসির আর একটি বৈশিষ্ট্য হল ভিউগুলি বাসাতে পারে। উদাহরণস্বরূপ, বোতামগুলির একটি নিয়ন্ত্রণ প্যানেল নেস্টেড বোতামের ভিউগুলি সহ একটি জটিল ভিউ হিসাবে প্রয়োগ করা যেতে পারে। কোনও অবজেক্ট ইন্সপেক্টরের ব্যবহারকারীর ইন্টারফেসে নেস্টেড ভিউ থাকতে পারে যা কোনও ডিবাগারে পুনরায় ব্যবহার করা যেতে পারে। এমভিসি কমপোজিটভিউ ক্লাসের সাথে নেস্টেড ভিউগুলিকে সমর্থন করে, ভিউর একটি সাবক্লাস। কম্পোজিটভিউ অবজেক্টগুলি ভিউ অবজেক্টের মতোই কাজ করে; একটি ভিউ যেখানে ব্যবহার করা যেতে পারে সেখানে একটি সংমিশ্রিত ভিউ ব্যবহার করা যেতে পারে তবে এতে নেস্টেড ভিউগুলিও রয়েছে এবং পরিচালনা করে।
আবার, আমরা এটিকে এমন একটি ডিজাইন হিসাবে ভাবতে পারি যা এটির একটি উপাদানটির মতোই আমাদের একটি সংমিশ্রিত দৃষ্টিভঙ্গিটিও আচরণ করতে দেয়। তবে নকশাটি আরও সাধারণ সমস্যার ক্ষেত্রে প্রযোজ্য, যা আমরা যখনই বস্তুগুলিকে গোষ্ঠীবদ্ধ করতে এবং গোষ্ঠীটিকে একটি পৃথক বস্তুর মতো আচরণ করতে চাই তখনই ঘটে। এই আরও সাধারণ নকশাটি সংমিশ্রণ (163) ডিজাইন প্যাটার্ন দ্বারা বর্ণিত হয়েছে। এটি আপনাকে এমন একটি শ্রেণিবিন্যাস তৈরি করতে দেয় যেখানে কিছু সাবক্লাসগুলি আদিম বস্তুগুলি (উদাহরণস্বরূপ, বোতাম) এবং অন্যান্য শ্রেণিগুলি সংক্ষিপ্ত অবজেক্টগুলি (কমপোজিটভিউ) সংজ্ঞায়িত করে যা আরও জটিল বস্তুগুলিতে আদিমদের একত্রিত করে।
এমভিসি আপনাকে ভিজ্যুয়াল উপস্থাপনা পরিবর্তন না করেই কোনও ভিউ ব্যবহারকারীর ইনপুটকে যেভাবে সাড়া দেয় তা পরিবর্তন করতে দেয়। আপনি কীবোর্ডে যেভাবে প্রতিক্রিয়া দেখিয়েছেন সেটিকে পরিবর্তন করতে পারেন, উদাহরণস্বরূপ, অথবা এটি কমান্ড কীগুলির পরিবর্তে একটি পপ-আপ মেনু ব্যবহার করতে পারে। এমভিসি একটি নিয়ন্ত্রণকারী অবজেক্টে প্রতিক্রিয়া প্রক্রিয়াটি মোড়ক করে। নিয়ন্ত্রণকারীদের একটি শ্রেণিবদ্ধ শ্রেণিবদ্ধতা রয়েছে, এটি বিদ্যমান অবস্থার পরিবর্তনের হিসাবে একটি নতুন নিয়ামক তৈরি করা সহজ করে তোলে।
একটি দৃশ্য একটি নির্দিষ্ট প্রতিক্রিয়া কৌশল প্রয়োগের জন্য একটি নিয়ামক সাবক্লাসের উদাহরণ ব্যবহার করে; একটি ভিন্ন কৌশল বাস্তবায়নের জন্য, কেবলমাত্র ভিন্ন ধরণের নিয়ামক দিয়ে উদাহরণটি প্রতিস্থাপন করুন। রান-টাইমে কোনও ভিউর কন্ট্রোলার পরিবর্তন করা এমনকি তার ব্যবহারকারীর ইনপুটটিতে যেভাবে প্রতিক্রিয়া দেখায় সেভাবে পরিবর্তন করা সম্ভব। উদাহরণস্বরূপ, একটি দৃশ্য অক্ষম করা যেতে পারে যাতে এটি ইনপুট ইভেন্টগুলিকে উপেক্ষা করে এমন কোনও নিয়ামক দিয়ে কেবল ইনপুট গ্রহণ না করে।
ভিউ-কন্ট্রোলার সম্পর্ক কৌশল (315) ডিজাইন প্যাটার্নের একটি উদাহরণ। কৌশল হ'ল একটি বস্তু যা একটি অ্যালগরিদমকে উপস্থাপন করে। আপনি যখন অ্যালগোরিদমকে স্থিতিশীলভাবে বা গতিশীলভাবে প্রতিস্থাপন করতে চান যখন আপনার অ্যালগরিদমের অনেকগুলি রূপ রয়েছে বা যখন অ্যালগরিদমটিতে জটিল ডেটা কাঠামো থাকে যা আপনি এনক্যাপসুলেট করতে চান তা কার্যকর হয়।
এমভিসি অন্য ডিজাইনের নিদর্শনগুলি ব্যবহার করে যেমন কারখানার জন্য ডিফল্ট নিয়ামক শ্রেণি নির্দিষ্ট করার জন্য কারখানা পদ্ধতি (107) এবং কোনও দৃশ্যে স্ক্রোলিং যুক্ত করতে ডেকরেটার (175) নির্দিষ্ট করে। তবে এমভিসির মূল সম্পর্কগুলি পর্যবেক্ষক, সংমিশ্রণ এবং কৌশল নকশার ধরণগুলি দিয়ে থাকে।