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


35

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

সংক্ষেপে বইটি উদ্ধৃত করুন

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

এবং

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

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

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

আমি আশা করছিলাম যে সম্ভবত আরও অভিজ্ঞতার সাথে কেউ এমভিসিএস প্যাটার্নে যে মিস করছি তার কোনও স্পষ্ট ত্রুটি / সমস্যা আছে কিনা তা নিয়ে কিছুটা আলোকপাত করতে পারে ।


2
অ্যাকশনস্ক্রিপ্টে রোবটলগস পরিষেবাটি বোঝাতে এমভিসিএসে "এস" ব্যবহার করে। তবে এটি মূলত একইভাবে ব্যবহৃত হয়। সুতরাং এটির অন্তত অন্য একটি উদাহরণ রয়েছে।
অ্যামি ব্লাকেনশিপ

1
এমভিসিতে স্টোরটি সাধারণত মডেলের অংশ is একে এর ডিএও অংশ বলে।
ফ্লোরিয়ান মার্জাইন

@ ফ্লোরিয়ানমারগাইন কন্ট্রোলারের বিপরীতে ব্যবহার করছে (যা এই বই থেকে বোঝা যাচ্ছে (এটি "এমভিসির অনুরোধে যুক্তিটি নিয়ামক বিষয়গুলির দায়িত্ব")? এবং আপনি কি এটির নিজের স্তরে স্থানান্তরিত করার জন্য কোনও সুস্পষ্ট অবক্ষয় দেখছেন? ?
জ্যাক

উত্তর:


18

"স্টোর", এমভিসিএস ডিজাইনের ধরণগুলির ক্ষেত্রে, স্টোরেজ লজিকের দিকে ঝুঁকে পড়ে। আইওএসের ক্ষেত্রে এটি সাধারণত একটি কোর ডেটা বাস্তবায়ন হয়। আপনি যদি এক্সকোডে একটি কোর ডেটা-ব্যাকযুক্ত টেম্পলেট তৈরি করেন, আপনি অ্যাপডেলিগেট শ্রেণিতে এই নকশার প্যাটার্নটির "স্টোর" দিকটি দেখতে পাবেন।

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

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

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


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

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

18

এ প্রসঙ্গে শব্দসমূহ খুব অনেকটা পছন্দ 'স্টোরে' সংগ্রহস্থলের প্রয়োগ বা পরিষেবা । সেক্ষেত্রে এটি একটি অত্যন্ত সাধারণ প্যাটার্ন। ত্রুটি / সমস্যাগুলি আপনার বাস্তবায়ন এবং সমস্যা ডোমেনের সাথে পৃথক হবে।

একটি সাধারণ স্তরে, শোনা যাচ্ছে যে বইটি 'স্টোর' ব্যবহার করে ব্যবসায় যুক্তিযুক্ত স্তরকে উপস্থাপন করতে ব্যবহার করছে + তথ্য পুনরুদ্ধার যুক্তির একটি স্তর যা আপনার আবেদনের অংশ হতে পারে বা নাও হতে পারে এমন এক সেট ডেটা পরিচালনা করে of

উদাহরণস্বরূপ, টুইটার এপিটিকে একটি 'স্টোর'-এ মুড়িয়ে ফেলা সেই যুক্তিটিকে পৃথক করার একটি দুর্দান্ত উপায়।

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

নীচের লাইন, আমি তাদের পরামর্শ অনুসারে আপনি ভাল হয়ে উঠবেন বলে মনে করেন (সামগ্রিকভাবে শব্দটি মনে হয়)।


1
আপনি সরবরাহ করেছেন এমন লিঙ্কগুলি পড়ুন এটি এমভিসি প্যাটার্নের একটি এক্সটেনশন হিসাবে ব্যবহৃত হচ্ছে না বাদে এটির মতো শোনাচ্ছে।
জ্যাক

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