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