সাধারণ অ্যান্ড্রয়েড আর্কিটেকচার (এমভিসি বনাম এমভিপি বনাম এমভিভিএম)

আমরা আর্কিটেকচারে যাওয়ার আগে, আসুন এই শব্দটি পরিষ্কার হয়ে যাক।
গড ক্লাস / অবজেক্ট: এমন শ্রেণি যা একটি সংখ্যক উপাদান রয়েছে এবং উপাদানগুলি একত্রিত হয়। এটি খুব খারাপ ধারণা এবং এগুলি অবশ্যই কোনও মূল্যে এড়ানো উচিত। এটি একটি স্থাপত্য নিদর্শন।

এমভিসি: মডেল ভিউ কন্ট্রোলার

মডেল:
1. ডেটা মডেল প্রতিনিধিত্ব করে।
২. ডেটা স্টেটস পরিচালনা করে
৩. বিজনেস লজিকস রয়েছে

দেখুন:
1. আমরা যেভাবে আমাদের ডেটা উপস্থাপন করি উদাঃ অ্যান্ড্রয়েডে ভিউ / লেআউট।
2. ইউআই রেন্ডার করে।

নিয়ন্ত্রক:
1. আমাদের অ্যাপ্লিকেশনটির সাথে ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করে।
2. মডেল এবং দর্শন মধ্যে যোগাযোগ চ্যানেল।
উদাহরণস্বরূপ অ্যান্ড্রয়েডের টুকরো / ক্রিয়াকলাপ।

এমভিসি ফ্লো ডায়াগ্রামটি দেখতে পাবেন:

ব্যবহারকারীটি ইউআইয়ের সাথে ইন্টারঅ্যাক্ট করে এবং নিয়ামকটি ভিউয়ের মাধ্যমে অবহিত হয়। ব্যবহারকারীর মিথস্ক্রিয়ার ভিত্তিতে নিয়ন্ত্রক নির্দিষ্ট কিছু মডেলগুলিকে সংশোধন করে। মডেলগুলি কিছু ব্যবসায়িক যুক্তি সম্পাদন করে এবং নিয়ামককে আপডেট হওয়া মডেল ডেটা স্থিতি ফিরিয়ে দেয়। মডেল থেকে প্রাপ্ত হিসাবে নতুন তথ্য অবস্থা অনুযায়ী নিয়ন্ত্রকটি ইউআই আপডেট করতে পারে।

দৃশ্যটি ব্যবহারকারী ইনপুট পায় এবং নিয়ন্ত্রণকারীকে ব্যবহারকারী ইনপুট পরিচালনা করতে বলে।
ব্যবহারকারী বার্তাটি আড়াল / দেখার জন্য চয়ন করেছেন কিনা তার উপর ভিত্তি করে কন্ট্রোলার ভিউ থেকে ইনপুট পান। কন্ট্রোলার মডেলটিকে ডেটা স্থিতি আপডেট করার জন্য কল করুন (এখানে বার্তা)।
মডেলটি কন্ট্রোলার থেকে ইনপুট এর উপর ভিত্তি করে মডেল আপডেট করে। সুতরাং এটিতে এই ব্যবসায়িক যুক্তি রয়েছে।
কন্ট্রোলাররা আপডেট হওয়া ডেটা পান এবং সেই অনুযায়ী ইউআই আপডেট করে।

এমভিপি: মডেল ভিউ উপস্থাপক

মডেল:
এমভিসি প্যাটার্ন হিসাবে একই।

দেখুন:
1. আমরা যেভাবে আমাদের ডেটা উপস্থাপন করি উদাঃ অ্যান্ড্রয়েডে দর্শন / লেআউটগুলির পাশাপাশি ক্রিয়াকলাপ / খণ্ডগুলি।
2. উপস্থাপকের ক্রিয়াকলাপগুলির জন্য একটি ইন্টারফেস কার্যকর করবে।

উপস্থাপকের:
1. মতামতের সাথে কোনও সম্পর্ক নেই (এমভিসি থেকে আলাদা)।
২. অপারেশনগুলি আমাদের মতামত দ্বারা আহ্বান করা হয়।
৩. ভিউ'র ইন্টারফেসের মাধ্যমে ভিউগুলি আপডেট করা হয়।

এমভিপি ফ্লো ডায়াগ্রামটি দেখতে পাবেন:

যদিও ফ্লো ডায়াগ্রামটি এমভিসি হিসাবে একই দেখাচ্ছে তবে পার্থক্যটি হ'ল ভিউ এবং উপস্থাপক / নিয়ন্ত্রণকারীরা একে অপরের সাথে কীভাবে যোগাযোগ করে।

এমভিপিতে ভিউ এবং উপস্থাপকরা একটি ইন্টারফেসের মাধ্যমে মিথস্ক্রিয়া করেন (এমভিসি থেকে পৃথক)। উপস্থাপকরা ইন্টারফেসে কিছু ক্রিয়া সম্পাদন করে যা ভিউগুলিতে প্রয়োগ করা হয় এবং তাই ভিউ আপডেট হয়।

সুতরাং মডেলটি একই থাকে (এমভিসির মতো)।
এখানে উপস্থাপক কেবল ইন্টারফেস ক্রিয়াগুলি সম্পাদন করে এবং এটি আপডেট করার চেষ্টা করছে এমন দৃশ্যগুলির কোনও জ্ঞান নেই।
সুতরাং যে ইন্টারফেস বাস্তবায়ন মতামত ইউআই আপডেট করে।

এটি এমভিসি থেকে অনেক ভাল কারণ এখানে উপস্থাপকের কাছে কোনও এন্ড্রয়েড এপিআই নেই এবং এটি সহজেই পরীক্ষা করা যায়।
মতামতগুলি আপডেট হয়েছে কিনা তা দেখতে এস্প্রেসো ইত্যাদি ব্যবহার করে পরীক্ষা করা যেতে পারে।

সুতরাং মতামত বেশ বোবা হয়। তারা উপস্থাপকের কাছ থেকে ডেটা পায় এবং সেই অনুযায়ী ইউআই উপাদানগুলি আপডেট করে।

এমভিভিএম- মডেল দেখুন ভিউমোডেল

এটি ভিউ বাইন্ডিং কোডটি আরও কমানোর অর্থাত্ ভিউ মডেল ডেটার সাথে কীভাবে আবদ্ধ হয়।

অ্যান্ড্রয়েড ইকোসিস্টেমে কথা বলার সাথে সাথে এটি Google থেকে ডেটা বন্ডিং লাইব্রেরি ব্যবহার করে এবং এক্সএমএল লেআউটে ভিউ-র বাইন্ডিং যুক্তি প্রয়োগ করা হয়।

মডেল:
এমভিসি / এমভিপি প্যাটার্নের মতোই।

দেখুন:
1. এমভিসি / এমভিপি প্যাটার্ন হিসাবে একই।

ViewModel:
1. এতে মডেল রয়েছে।
2. আপডেট মানগুলির জন্য পর্যবেক্ষণযোগ্য মান ব্যবহার করে।
৩. মান আপডেটের ক্ষেত্রে, সম্পর্কিত দর্শনগুলি আপডেটগুলি পাবেন (ডেটা বাইন্ডিং লাইব্রেরি ব্যবহার করে)।

এমভিপি ফ্লো ডায়াগ্রামটি দেখতে পাবেন:

সুতরাং ভিউটি ব্যবহারকারীর ইন্টারঅ্যাকশনগুলি গ্রহণ করে এবং ভিউ মডেলকে অবহিত করবে।
এখন ভিউমোডেল মডেলটির পাশাপাশি পর্যবেক্ষণযোগ্য (যা মান পরিবর্তনের জন্য প্রার্থনা করবে) আপডেট করবে। এরপরে, ভিউমোডেল ইন্টারফেসটি সরাসরি ইউআই (এক্সএমএল লেআউটগুলি) আপডেট করবে।

সুতরাং এক্সএমএল ফাইলটি ভিউটি দেখতে পাবেন:

সুতরাং এখানে যেমন টেক্সটভিউ বার্তাটির মান পরিবর্তন হয় তেমনি এর পাঠ্যটি সরাসরি আপডেট হতে পারে।

এমভিসি / এমভিপি / এমভিভিএমের মধ্যে তুলনা:

নিয়ন্ত্রণকারীরা (অ্যান্ড্রয়েডে ক্রিয়াকলাপগুলি) এমভিপি এবং এমভিভিএম-এর বিপরীতে অ্যান্ড্রয়েডের উপর উচ্চ নির্ভরতা রাখে এবং তাই এমভিপি / এমভিভিএম-তে ইউনিট পরীক্ষা করা সহজ।

তবে এক্সএমএল ডেটা বাইন্ডিংয়ের জন্য এমভিভিএম-তে আরও জটিল হয়।