অ্যান্ড্রয়েডে কোন আর্কিটেকচার নিদর্শন ব্যবহৃত হয়? [বন্ধ]


267

আমি মোবাইল প্ল্যাটফর্মগুলির জন্য একটি ছোট গবেষণা করছি এবং আমি জানতে চাই যে অ্যান্ড্রয়েডে কোন ডিজাইনের ধরণগুলি ব্যবহৃত হয়?

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

কোন নিদর্শনগুলি এবং বিশেষ করে অ্যান্ড্রয়েড কোথায় ব্যবহার করে?

সম্পাদনা

আমি কার্নেল, ডালভিক এবং আরও গভীরভাবে ব্যবহৃত নকশার নিদর্শনগুলির জন্য জিজ্ঞাসা করছি না, তবে অ্যাপ্লিকেশন বিকাশকালে কোনও অ্যাপ্লিকেশন বিকাশকারী মিলবে এমন প্যাটার্নগুলি সম্পর্কে।


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

4
@ পিট, ঠিক আছে, সম্ভবত আপনি ঠিক বলেছেন তবে একই সাথে আমি কার্নেলের মতো এত গভীরভাবে যাচ্ছি না, আমি প্রয়োগের পৃষ্ঠায় আগ্রহী, যেমন UIViewControllerএমওসি ব্যবহার করে আইওএস প্রয়োগ করা হয়েছে ( UIViewControllerএটি একটি নিয়ামক এবং এর মূলটি UIViewদেখুন) , UIApplicationপ্রতিনিধি হিসাবে অ্যাপলিকেশন ডেলিগেট প্রাপ্ত প্রতিনিধি এবং আরও কিছু ব্যবহার করে ...
বুর্জুয়া

3
আমি মনে করি আপনার সত্যিকারের নীচ থেকে অ্যান্ড্রয়েড শিখানো উচিত এবং আইওএস থেকে অ্যান্ড্রয়েড পর্যন্ত আপনার জ্ঞান "পোর্ট" করার চেষ্টা করবেন না। সেখানে দুর্দান্ত বইগুলি প্রচুর আছে। আপ্রেস একটি গুচ্ছ তৈরি করে। আপনি যদি অ্যান্ড্রয়েডে অ্যাপ্লিকেশন এবং পরিষেবা জীবনচক্র বুঝতে পারেন তবে আপনার অ্যাপ্লিকেশনগুলিকে সঠিকভাবে কীভাবে ডেসিং করা যায় তা পাওয়া উচিত।
ব্লাইন্ডস্টফ


এটি সহায়তা করতে পারে: stackoverflow.com/a/49694378
আলী নেম

উত্তর:


323

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

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

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

এমভিসি-তে, নিয়ামকটি মূল প্রবেশের পয়েন্ট হওয়ার কথা। অ্যান্ড্রয়েড বিকাশে এটি প্রয়োগ করার সময় যদি এই ঘটনাটি ঘটে তবে এটি কিছুটা বিতর্কিত, যেহেতু ক্রিয়াকলাপটি বেশিরভাগ অ্যাপ্লিকেশনের প্রাকৃতিক প্রবেশ বিন্দু।

এ কারণে, আমি ব্যক্তিগতভাবে দেখতে পাই যে মডেলটি – ভিউ – উপস্থাপক প্যাটার্নটি অ্যান্ড্রয়েড বিকাশের জন্য উপযুক্ত fit যেহেতু এই প্যাটার্নে ভিউয়ের ভূমিকা:

  • এন্ট্রি পয়েন্ট হিসাবে পরিবেশন করা
  • রেন্ডারিং উপাদান
  • উপস্থাপকের কাছে ব্যবহারকারী ইভেন্টগুলি রাউটিং করা

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

দেখুন - এতে আপনার ইউআই উপাদান রয়েছে এবং তাদের জন্য ইভেন্টগুলি পরিচালনা করে।

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

মডেল - এটি আপনার সম্পূর্ণ ডোমেন মডেল হওয়া উচিত। আশা করি এটি আপনার ডোমেন মডেলটিকে আরও "আঁটসাঁট" করে তুলতে সহায়তা করবে, যেহেতু উপরে বর্ণিত মামলাগুলি মোকাবেলার জন্য আপনার বিশেষ পদ্ধতির প্রয়োজন হবে না।

ভিউ থেকে মডেলটিকে সমস্ত একসাথে (উপস্থাপকের ব্যবহারের মাধ্যমে) ডিকোপলিং করার মাধ্যমে এটি আপনার মডেলটি পরীক্ষা করার জন্য আরও স্বজ্ঞাত হয়ে ওঠে। আপনার ডোমেন মডেলের জন্য ইউনিট পরীক্ষা এবং আপনার উপস্থাপকদের জন্য ইউনিট পরীক্ষা থাকতে পারে।

চেষ্টা কর. আমি ব্যক্তিগতভাবে এটিকে অ্যান্ড্রয়েড বিকাশের জন্য দুর্দান্ত ফিট মনে করি।


14
দুর্দান্ত উত্তর! যদিও আমার কাছে প্রশ্ন রয়েছে: ১. কার্যকলাপ = দেখুন, আমি কি এই অধিকার পেয়েছি? ২) আপনি কি উপস্থাপককে তার নিজস্ব পাবলিক বর্গ হিসাবে, বা কার্যকলাপের অভ্যন্তরীণ শ্রেণি হিসাবে প্রয়োগ করবেন? অথবা একটি খণ্ড (এছাড়াও অভ্যন্তর শ্রেণি)? ৩. আপনি কী বোঝাতে চেয়েছেন যে ক্রিয়াকলাপের (দর্শন) আসল মডেল শ্রেণির পরিবর্তে স্থানান্তর ক্লাসগুলি ব্যবহার করা হবে?
মানমাল

14
1. হ্যাঁ, আমি এগুলিকে এমভিপি প্যাটার্নের মধ্যে দেখা হিসাবে ব্যবহার করি। ২. ব্যক্তিগতভাবে আমি এগুলিকে পৃথক পাবলিক ক্লাসে বিভক্ত করি, তবে এটি আমার মনে হয় এমন স্বাদের বিষয় :) ৩. আমি এটি বেশ খারাপভাবে ব্যাখ্যা করেছি, "প্রয়োজনীয় শ্রেণিগুলিকে এগিয়ে নেওয়া" বাক্যটি বিভ্রান্তিকর। আমার অর্থ, উপস্থাপকটি কী ভিউ এবং মডেলের মধ্যে বসে আছে, এটি মডেলটি পড়ে এবং তারপরে ভিউ আপডেট করে। আমি আমার উত্তরটি আরও কিছুটা পরিষ্কার হওয়ার জন্য আপডেট করব :)
JustDanyul

সময় দেওয়ার জন্য ধন্যবাদ, আমি এখনই এটি
পেয়েছি

11
আমি প্রকৃতপক্ষে অ্যান্ড্রয়েড বিকাশকে ভালবাসি কারণ এটি অত্যন্ত decoupled। আমি কীভাবে এমভিসি ব্যবহার করি: ব্যবহারকারী আইও এর জন্য খাঁটি ক্রিয়াকলাপগুলি ব্যবহার করুন এবং আপনার সমস্ত প্রক্রিয়াজাতকরণের জন্য স্থানীয় পরিষেবা ব্যবহার করুন। যখন পরিষেবাটি কিছু দেখাতে চায় - এটি আপনার ক্রিয়াকলাপগুলিতে সম্প্রচার করুন! যখন অন্যান্য দেব ক্রিয়াকলাপে খুব বেশি প্রক্রিয়াকরণ করেন তখন আমি সত্যিই এটি ঘৃণা করি।
কেউ কেউ কোথাও

8
@ সোমোনসোমেজ কোথাও এমন কোনও শ্রেণি কেন নেই যা এই স্টাফকে পৃথক থ্রেড / অ্যাসিঙ্কটাস্কে পরিচালনা করে, কেন পরিষেবা?
ছেলে

87

নভেম্বর 2018 আপডেট করুন

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

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

এই উত্তরটি ২০১ 2016 সালের নভেম্বর পর্যন্ত প্রাসঙ্গিক থাকার জন্য আপডেট করা হয়েছিল was


দেখে মনে হচ্ছে আপনি জন্য সচেষ্ট হয় স্থাপত্য নিদর্শন বদলে নকশা নিদর্শন

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

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

অন্যদিকে, স্থাপত্য নিদর্শনগুলি নির্দিষ্ট সফ্টওয়্যার কার্যগুলিকে সম্বোধন করে না - তাদের লক্ষ্য রয়েছে যে প্রশ্নে থাকা সফ্টওয়্যার উপাদানটির ব্যবহারের ক্ষেত্রে ভিত্তিক সফ্টওয়্যার সংস্থার জন্য টেমপ্লেট সরবরাহ করা

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

যেহেতু আপনি আপনার প্রশ্নে এমভিসির কথা উল্লেখ করেছেন তাই আমি অনুমান করতে পারি যে আপনি যা খুঁজছেন তা স্থাপত্য নিদর্শনগুলি।

এখানে চিত্র বিবরণ লিখুন


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

তবে আজ পরিস্থিতি অন্যরকম - গুগল সম্প্রতি ডেটা বাইন্ডিং লাইব্রেরি প্রকাশ করেছে , যা অ্যান্ড্রয়েড স্টুডিওর সাথে পুরোপুরি সংহত, এবং এমনকি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য আর্কিটেকচার ব্লুপ্রিন্টগুলির একটি সেট তৈরি করেছে

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

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

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


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

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

সুতরাং, যদি আপনি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য সোলিড নীতি অনুসরণ করে একটি ভাল স্থাপত্য প্যাটার্ন সন্ধান করছেন , আপনি অ্যান্ড্রয়েডে এমভিসি এবং এমভিপি আর্কিটেকচারাল ধরণ সম্পর্কে আমার পোস্টে একটির বর্ণনা পেতে পারেন ।


2
যেমন সংস্থান সরবরাহের জন্য ভাল! ধন্যবাদ!
Aleksandar

1
খুব দরকারী লিঙ্ক!
সেমফোর

আমি আপনার ভিডিও কোর্স পছন্দ করি! ধন্যবাদ
ভিক্টর অপয়ন

79

এখানে চিত্র বর্ণনা লিখুন

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

আমি আশা করি আপনি এটি সহায়ক হবে।


3
দয়া করে সম্পাদনা আপনার পোস্ট এবং এর পরিবর্তে লেখা স্ক্রিনশট হিসাবে প্রকৃত বিষয়বস্তু প্রদর্শন করুন। অন্যরা আপনার চিত্রগুলি অনুলিপি এবং আটকানো বা আপনার টাইপগুলি ঠিক করতে সহায়তা করতে পারে না। বিশদ জন্য এখানে দেখুন । ধন্যবাদ.
পাইং


1
এই উত্তরটির জন্য আপনাকে ধন্যবাদ আমি আর্কিটেকচারাল প্যাটার্স এবং ডিজাইনের ধরণগুলির মধ্যে এতটাই বিভ্রান্ত হয়ে পড়েছিলাম, আমার কাছে এখনও একটি প্রশ্ন আছে oo- নকশা এবং বিকাশ কী !? @ পিটার ওয়াল্টার
ভট্ট জোশী

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

ইভেন্ট বাসে প্রকাশক এবং গ্রাহক ডিজাইন প্যাটার্ন ব্যবহার করা হয়েছে
ডেভরথ

48

অ্যান্ড্রয়েড কাঠামোর মধ্যে বিভিন্ন নিদর্শন ব্যবহৃত হয়:

  • ব্রডকাস্ট রিসিভার অবজারভার প্যাটার্ন ব্যবহার করে
  • রিমোটার পরিষেবা প্রার্থনা প্রক্সি প্যাটার্ন ব্যবহার করে
  • গোষ্ঠীটি দেখুন এবং দেখুন সম্মিলিত প্যাটার্ন ব্যবহার করে
  • মিডিয়া কাঠামোতে ফ্যাসাদ প্যাটার্ন ব্যবহার করা হয়

5
আপনি দয়া করে লিঙ্কগুলি (রেফারেন্স) ভাগ করে নিতে পারেন
শানরাইশন

দয়া করে রেফারেন্স ভাগ করুন যাতে আমি এটি সম্পর্কে আরও জানতে পারি। ধন্যবাদ
সৈয়দ হামজা হাসান

27

এখানে অ্যান্ড্রয়েডের জন্য কমন ডিজাইন প্যাটার্নসের একটি দুর্দান্ত নিবন্ধ :

সৃষ্টিশীল নিদর্শন:

  • নির্মাতা (যেমন সতর্কতা ডায়ালগ। বিল্ডার )
  • নির্ভরতা ইনজেকশন (যেমন ড্যাজার 2) )
  • একক বস্তু

কাঠামোগত নিদর্শন:

  • অ্যাডাপ্টার (যেমন রিসাইক্লার ভিউ.এডাপ্টার )
  • মুখোমুখি (যেমন retrofit )

আচরণগত নিদর্শন:

  • কমান্ড (যেমন ইভেন্টবাস) )
  • পর্যবেক্ষক (উদাঃ আরএক্সএন্ড্রয়েড) )
  • মডেল ভিউ কন্ট্রোলার
  • মডেল ভিউ মডেল ( উপরে এমভিসি প্যাটার্নের অনুরূপ )

1
নিবন্ধ থেকে মূল পয়েন্টগুলি চমৎকার হবে।
ম্যাক্সিম জি

যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
ভার্গব রাও

ইভেন্ট বাসে প্রকাশক এবং গ্রাহক ডিজাইন প্যাটার্ন ব্যবহার করা হয়েছে
ডেভরথ

16

নিম্নলিখিত অ্যান্ড্রয়েড ক্লাসগুলি ডিজাইন প্যাটার্নগুলি ব্যবহার করে

1) ভিউ হোল্ডার সিঙ্গলটন ডিজাইন প্যাটার্ন ব্যবহার করে

2) অভিপ্রায় কারখানার নকশা প্যাটার্ন ব্যবহার করে

3) অ্যাডাপ্টার অ্যাডাপ্টার ডিজাইন প্যাটার্ন ব্যবহার করে

৪) ব্রডকাস্ট রিসিভার অবজারভার ডিজাইন প্যাটার্ন ব্যবহার করে

5) দেখুন কম্পোজিট ডিজাইন প্যাটার্ন ব্যবহার করে

6) মিডিয়া ফ্রেম ওয়ার্ক ফ্য্যাডে ডিজাইন প্যাটার্ন ব্যবহার করে


11

ইন বিজ্ঞপ্তিগুলি মামলা, NotificationCompat.Builderব্যবহার নির্মাতা প্যাটার্ন

মত,

mBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_notification)
                    .setContentTitle(getString(R.string.notification))
                    .setContentText(getString(R.string.ping))
                    .setDefaults(Notification.DEFAULT_ALL);

3
এটি আসলে বিল্ডার প্যাটার্ন।
পাইভজান

@ পাইভজান আমি ভুল করছি আমাকে সংশোধন করার জন্য আপনাকে ধন্যবাদ। আমি ভেবেছিলাম এটি ডেকরেটর প্যাটার্নের একটি সাধারণ সংস্করণ।
জেফ টি।

6

অ্যান্ড্রয়েড ভিউহোল্ডার ডিজাইন প্যাটার্নও ব্যবহার করে।

এটি কোনও তালিকা ভিউ স্ক্রোল করার সময় কর্মক্ষমতা উন্নত করতে ব্যবহৃত হয়।

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


5

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

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

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

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


2

আমি একটি ডিজাইনের ধরণ যুক্ত করতে চাই যা অ্যান্ড্রয়েড ফ্রেমওয়ার্কে প্রয়োগ করা হয়েছে। এটি হ'ল সিঙ্ক হাফ অ্যাসিঙ্ক প্যাটার্নটি অ্যাসিঙ্কটাক বাস্তবায়নে ব্যবহৃত হয়। আমার আলোচনা দেখুন

https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing


1

অ্যান্ড্রয়েডে "ওয়ার্ক ক্যু প্রসেসর" প্যাটার্নটি সাধারণত কোনও অ্যাপ্লিকেশনের মূল থ্রেড থেকে কাজগুলি অফলোড করতে ব্যবহৃত হয়।

উদাহরণ: ইনটেন্স সার্ভিস ক্লাসের নকশা।

ইনট্যান্স সার্ভিসগুলি ইন্টেন্টগুলি গ্রহণ করে, একটি কর্মী থ্রেড চালু করে এবং যথাযথভাবে পরিষেবাটি বন্ধ করে দেয় ll সমস্ত অনুরোধগুলি একক কর্মী থ্রেডে পরিচালিত হয়।


0

বাইন্ডার মৃত্যু প্রাপক বিজ্ঞপ্তিগুলির জন্য "পর্যবেক্ষক প্যাটার্ন" ব্যবহার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.