মডেল-ভিউ-উপস্থাপক (এমভিপি) স্ক্রিনটি কি অ্যান্ড্রয়েডের জন্য দরকারী?


34

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

"মডেল ভিউ উপস্থাপক যেমন ঠিক মার্টিন ফোলার বা মাইকেল ফেদারস [২] বলেছেন, ইউআই এর যুক্তি উপস্থাপক নামে একটি শ্রেণিতে বিভক্ত হয়েছে, এটি ব্যবহারকারীর সমস্ত ইনপুট পরিচালনা করে এবং" বোবা "দৃষ্টিভঙ্গিটি কী এবং কখন বলে প্রদর্শন "( এখান থেকে উদ্ধৃত )।

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


2
+1 ভাল প্রশ্ন কারণ আমি এখনও অ্যান্ড্রয়েড অ্যাপ উত্সগুলিতে এমভিপি / এমভিভিএম দেখতে পাইনি। এমভিপি অ্যান্ড্রয়েডের উদাহরণগুলি এবং তারা কতগুলি কোড / লিবিব ওভারহেড উত্পাদন করে তা দেখতে আকর্ষণীয় হবে। এই সমস্যা নিয়ে আলোচনা করা হয় নি Stackoverflow সুপারিশ উপায়ে টু উত্পাদন-অ্যাপ-পোর্টেবল মধ্যবর্তী-অ্যান্ড্রয়েড-এবং-অন্যান্য-প্ল্যাটফর্মের
k3b

হতে পারে, আমি এটি স্ট্যাকওভারফ্লোতে রেখে দিতে পারি, বা এটি বিধি বিপরীতে হবে?
গাংনাস

আপনি কোনও প্রশাসকের কাছে প্রশ্নটি সদৃশ করার পরিবর্তে এই প্রশ্নটি স্থানান্তর করতে চাইতে পারেন। এখানে programmersপ্রশ্নগুলির উপর আরও বিতর্কিত প্রশ্ন রয়েছে "আপনি কী মনে করেন .. / এটি ভাল বা খারাপ ..." এর stackoverflowচেয়ে বেশি হবে যদিও "অ্যান্ড্রয়েডে এমভিপি এর উদাহরণ রয়েছে"? আমার জন্য উভয় জায়গা ঠিক আছে।
k3b

আমার অসহায়ত্বের জন্য আমি দুঃখিত, তবে এখন পর্যন্ত আমি প্রশাসকদের সাথে সংযুক্ত হওয়ার কোনও উপায় খুঁজে
পাইনি

এই প্রশ্নটি স্ট্যাক ওভারফ্লোয়ের জন্য উপযুক্ত নয় । বিটিডাব্লু - আপনি "পতাকা" লিঙ্কটি ব্যবহার করে আপনার পোস্টকে পতাকাঙ্কিত করে মডারেটরের সাথে যোগাযোগ করতে পারেন।
ChrisF

উত্তর:


15

অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি মৌলিকভাবে মডেল-ভিউ-কন্ট্রোলার (এমভিসি) এর চারপাশে নির্মিত - এমভিপি একই জিনিস বলে মনে হয়, যদিও আমি এই শব্দটি আগে শুনিনি। ক্রিয়াকলাপগুলি কন্ট্রোলারের ভূমিকা পূরণ করে, এক্সএমএল ভিউগুলি কেবল এটিই (যদিও আপনি এটিকে ক্রিয়াকলাপে প্রোগ্রামগতভাবে তৈরি করতে পারেন - এটি এক্সএমএলে এটি করা সহজ এবং সহজ), এবং আপনি নিজেরাই যে মডেলটি লেখেন। সুতরাং হ্যাঁ, সেই মডেলটি বেশ ব্যবহারিক।

এই নকশা মডেল সম্পর্কে আপনি খুব বেশি কিছু না শুনে থাকতে পারেন এমন একটি সম্ভাব্য কারণ হ'ল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক আপনাকে ভিউ আলাদা করার জন্য বাধ্য করে। যেহেতু মোবাইল ডিভাইসে অ্যাপ্লিকেশনটি ছোট থাকে, লোকেরা সম্পূর্ণ অন-এমভিসি ব্যবহার করে না; এগুলি দৃষ্টিভঙ্গি এবং অ্যাকশন স্তরগুলির দিকে ঝোঁক দেয় যেখানে অ্যাকশন স্তরটি মডেলের (ছোট) কাজটি বেশি করে does

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


+1 টি! দয়া করে, আপনি এটিতে কিছু ভাল লেখার জন্য দুটি বা দুটি রেফারেন্স দিতে পারেন?
গাংনাস

4
আমি ভেবেছিলাম এমভিপি আপনাকে Action(= উপস্থাপনা) স্তর প্ল্যাটফর্মটিকেও স্বতন্ত্র রাখার সুযোগ দেয় - কমপক্ষে, যখন আপনার বিভিন্ন প্ল্যাটফর্মগুলি অনুরূপ ইউআই দক্ষতা সরবরাহ করে।
ডক ব্রাউন

@ ডকব্রাউন তত্ত্ব অনুসারে, হ্যাঁ অনুশীলনে আমি নিশ্চিত না যে এটি কখনই সম্ভব হবে, কারণ ব্যবহারকারীর মিথস্ক্রিয়াগুলি ভিউ বা উপস্থাপককে আঘাত করতে পারে। উদাহরণস্বরূপ, অ্যান্ড্রয়েডে সোয়াইপগুলি ক্রিয়াকলাপ দ্বারা পরিচালিত হয় তবে ওয়েব পৃষ্ঠাগুলিতে ভিউ (ব্রাউজার) দ্বারা পরিচালিত হবে।
মাইকেল কে

12
"অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি মৌলিকভাবে মডেল-ভিউ-কন্ট্রোলারের চারপাশে নির্মিত" - এটি এত মাত্রায় ভুল, আমি দুঃখিত। অ্যান্ড্রয়েড কাঠামোগত আর্কিটেকচার Godশ্বর শ্রেণীর চারদিকে নির্মিত যেখানে ভিউ / কন্ট্রোলার যুক্তি বিশৃঙ্খলাযুক্ত।
ইগর ফিলিপোভ

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

6

অ্যান্ড্রয়েড প্রোগ্রামিং সম্পর্কে আমার কোনও অভিজ্ঞতা নেই, তবে কিছু প্রবর্তক অ্যান্ড্রয়েড প্রোগ্রামিং টিউটোরিয়ালের সংক্ষিপ্ত নজর রাখার কারণে আমি অন্য কোনও ইভেন্ট চালিত কাঠামোর মতো এমভিপি কম কার্যকর হওয়ার কারণ খুঁজে পাচ্ছি না। Activityক্লাস থেকে খুব ভিন্ন নয় Dialogবা Formতাই এটি সহজ আপনার অ্যাপ্লিকেশনের কোনো কার্যকলাপ উপশ্রেণী জন্য একটি "Activitity উপস্থাপকের" শ্রেণী তৈরি এবং সেখানে কোর যুক্তিবিজ্ঞান লাগাতে হওয়া উচিত, অন্যান্য অবকাঠামো হবে।

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


আপনার জন্য সময় +1 ধন্যবাদ। তবে আপনি অন্য একটি উত্তর থেকে দেখতে পাচ্ছেন, অ্যান্ড্রয়েডে একই রকম ব্যবহার করা হয় তবে ভিন্ন মডেল। "আমি 50 বছর ধরে গদ্য দিয়ে কথা বলেছি এবং এ সম্পর্কে জানি না!" এখন আমি মডেলগুলির পার্থক্যগুলি দেখার চেষ্টা করব।
গাংনুস

4
@ গাংনাস: এমভিপি হ'ল এমভিসির একটি বিশেষ রূপ, এখানে কোডবিটার / জেরেমিমিলার/2007/07/26/… আপনি আরও তথ্য পাবেন। এবং আমি যথেষ্ট নিশ্চিত যে এটি "এমভিসি বা এমভিপি উভয়ই" এর প্রশ্ন নয় a ক্রিয়াকলাপগুলি "নিয়ামক" র ফর্ম হতে পারে তবে তারা প্ল্যাটফর্ম নির্ভর। প্রতিটি ক্রিয়াকলাপের জন্য প্ল্যাটফর্মের স্বতন্ত্র উপস্থাপক শ্রেণিতে ইউআই যুক্তিকে পৃথক করা সম্ভবত তাদের আরও সহজ ইউনিট-টেস্টেবল এবং আরও বহনযোগ্য make
ডক ব্রাউন

5

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

এখানে এমভিপির তিনটি উপাদানই সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দেওয়া হল

দৃশ্য

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

উপস্থাপকের

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

আপনি যদি উপস্থাপকটিতে ডাটাবেস ব্যবহার করতে চান তবে ক্রিয়াকলাপটি একটি ডেটাবেস উদাহরণ তৈরি করুন এবং উপস্থাপকটিতে এটি ইনজেকশন করুন। এটি আপনাকে ইউনিট পরীক্ষার সময় ডাটাবেসটিকে উপহাস করতে সহায়তা করবে এবং ব্যবসায়ের যুক্তি পরীক্ষা করতে সক্ষম করবে।

মডেল

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


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

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

1
আসলে দুটি ধরণের এমভিপি রয়েছে। প্যাসিভ ভিউ (আপনি এখানে কী বর্ণনা করেছেন) এবং তদারকি উপস্থাপক, যা মডেলটিতে ভিউয়ের সরাসরি ডাটাবেইন্ডিংয়ের অনুমতি দেয় (অনেকটা এমভিভিএম এবং অনেক ওয়েব এমভিসি ফ্রেমওয়ার্কগুলির মতো)।
রাবারডাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.